Para crear una tarea en segundo plano debemos seguir los siguientes pasos:
1. Crear una clase que herede de IBackgroundTask
la clase debe ser sellada segun los requerimientos de WindowsRT y debe implementar la interface IBackgroundTask
Al implementarla se genera el método Run.
2. Agregar una espera o aplazamiento a la tarea
Si dentro de la tarea se ejecuta código asincrónico, se debe solicitar una espera, ya que de lo contrario el método Run podria terminar antes de que finalice la ejecución de la tarea.
Para esto usamos BackgroundTaskDeferral que guarda la espera en una variable y con esta indicamos cuando termina la ejecución del proceso.
BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();
//Codigo sincrónico
_deferral.Complete();
3. Diligenciar el archivo del manifiesto del proyecto
En este archivo podemos encontrar gran parte de la configuración de la aplicación. Para este caso se mostrará la configuración de la tarea en segundo plano
Debemos buscar el archivo package.appxmanifest
en la pestaña Declarations, buscamos en la opción Available Declarations la opción BackgroundTask
Al presionar click sobre esta podemos configurarla. Selecionamos el tipo de tareas que debe soportar y adicionamos el Entry Point (compuesto por el nameSpace de la clase y el nombre de la misma).
4. Registrar la tarea
El siguiente paso es realizar el registro de la tarea cuando se ejecute la aplicación. Para esto usamos el siguiente codigo:
Aquí podemos ver lo siguiente:
⦁ Obtenemos acceso al registro de tareas en segundo plano.
⦁ Validamos si la tarea ya se encuentra registrada, y de ser asi la quitamos del registro.
⦁ Instanciamos el objeto BackgroundTaskBuilder y diligenciamos los atributos nombre (Name) y punto de entrada de la tarea (TaskEntryPoint)
⦁ Asignamos el tiempo de intervalo de ejecución a través del objeto TimeTrigger (se debe tener en cuenta que este no permite el ingreso de valores inferiores a 15). Este es el tiempo de espera entre una ejecución y otra en el sistema.
⦁ Por último registramos la tarea con el método Register.
Siguiendo estos pasos nuestra tarea quedará registrada.