Share via


Cómo supervisar el progreso y la finalización de tareas en segundo plano (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Aprende cómo diseñar tu aplicación para que reconozca el progreso y la finalización de una tarea en segundo plano. Las tareas en segundo plano están desacopladas de la aplicación y se ejecutan de forma independiente, pero el código de la aplicación puede supervisar el progreso y la finalización de una tarea en segundo plano. Para ello, la aplicación se suscribe a eventos de las tareas en segundo plano que ha registrado con el sistema.

Lo que debes saber

Tecnologías

Requisitos previos

Instrucciones

Paso 1:

  1. Crea una función que se adjuntará al controlador de eventos para la finalización de la tarea en segundo plano. Esta función debe tomar un objeto BackgroundTaskCompletedEventArgs y ningún otro parámetro.

    Si registras una función localmente, puedes usar la siguiente superficie:

    function OnCompleted(args)
    {
        // TODO: Add code that deals with background task completion.
    }
    

    Luego puedes registrarla así con el objeto BackgroundTaskRegistration (obtenido con una llamada correcta a la función Register).

    backgroundTaskRegistration.addEventListener("completed", onCompleted);
    
  2. Necesitarás agregar el código que determina la finalización de la tarea en segundo plano.

    Por ejemplo, la muestra de tarea en segundo plano actualiza la interfaz de usuario con el estado de finalización guardado en LocalSettings:

    function OnCompleted(args)
    {
        // 
        // 
        // 
        backgroundTaskName = this.name;
    
        // 
        // Call a method to update the UI (beyond the scope of this example).
        // 
        UpdateUI();
    }
    
  3. Una aplicación robusta puede buscar las excepciones generadas por la tarea en segundo plano llamando a CheckResult.

    El método de la muestra de tarea en segundo plano se puede modificar de la siguiente manera para controlar las excepciones que lanza la tarea en segundo plano:

    function OnCompleted(task, args)
    {
        var settings = ApplicationData.Current.LocalSettings;
        var key = task.TaskId.ToString();
    
        try
        {
            args.CheckResult();
            BackgroundTaskSample.SampleBackgroundTaskStatus = settings.Values[key].ToString();
        }
        catch (Exception ex)
        {
            BackgroundTaskSample.SampleBackgroundTaskStatus = "Error: " + ex.Message;
        }
    
        UpdateUI();
    }
    

Paso 2:

  1. Crea una función de controlador de eventos para controlar las tareas en segundo plano finalizadas. Este código necesita seguir una superficie específica, que toma un objeto IBackgroundTaskRegistration y un objeto BackgroundTaskProgressEventArgs:

    Usa la siguiente superficie para el método OnProgress del controlador de eventos de la tarea en segundo plano:

    function OnProgress(task, args)
    {
        // TODO: Add code that deals with background task progress.
    }
    
  2. Agrega código al controlador de eventos que se encarga de la finalización de la tarea en segundo plano.

    Por ejemplo, la muestra de tarea en segundo plano actualiza la interfaz de usuario con el estado de progreso pasado a través del parámetro args:

    function OnProgress(task, args)
    {
        var progress = "Progress: " + args.Progress + "%";
        BackgroundTaskSample.SampleBackgroundTaskProgress = progress;
        UpdateUI();
    }
    

Paso 3:

Registra las funciones del controlador de eventos con tareas en segundo plano nuevas y existentes.

  1. Cuando la aplicación registra una tarea en segundo plano por primera vez, debería registrarla para recibir actualizaciones de progreso y finalización para ella, en caso de que la tarea se ejecute mientras la aplicación sigue activa en primer plano.

    Por ejemplo, la muestra de tarea en segundo plano llama a la siguiente función en todas las tareas en segundo plano que registra:

    
    function AttachProgressAndCompletedHandlers(IBackgroundTaskRegistration task)
    {
        task.Progress += new BackgroundTaskProgressEventHandler(OnProgress);
        task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
    }
    
  2. Cuando la aplicación se ejecuta o navega a una página nueva en la que es relevante el estado de la tarea en segundo plano, debería obtener una lista de las tareas en segundo plano registradas actualmente y asociarlas con las funciones del controlador de eventos de progreso y finalización. La lista de tareas en segundo plano actualmente registradas por la aplicación se conserva en la propiedad BackgroundTaskRegistration.AllTasks.

    Por ejemplo, la muestra de tarea en segundo plano usa el siguiente código para adjuntar controladores de eventos cuando se navega a la página SampleBackgroundTask:

    
    function OnNavigatedTo(NavigationEventArgs e)
    {
        foreach (var task in BackgroundTaskRegistration.AllTasks)
        {
            if (task.Value.Name == BackgroundTaskSample.SampleBackgroundTaskName)
            {
                AttachProgressAndCompletedHandlers(task.Value);
                BackgroundTaskSample.UpdateBackgroundTaskStatus(BackgroundTaskSample.SampleBackgroundTaskName, true);
            }
        }
    
        UpdateUI();
    }
    

Temas relacionados

Inicio rápido: creación y registro de una tarea en segundo plano

Cómo depurar una tarea en segundo plano

Dar soporte a tu aplicación mediante tareas en segundo plano

Cómo administrar una tarea en segundo plano cancelada

Cómo obtener una lista de tareas en segundo plano pendientes

Cómo declarar tareas en segundo plano en el manifiesto de la aplicación

Directrices y listas de comprobación para tareas en segundo plano