Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las APIs importantes
Aprenda a usar la clase MaintenanceTrigger para ejecutar código ligero en segundo plano mientras el dispositivo está conectado.
Creación de un objeto de desencadenador de mantenimiento
En este ejemplo se supone que tiene código ligero que puede ejecutar en segundo plano para mejorar la aplicación mientras el dispositivo está conectado. Este tema se enfoca en el MaintenanceTrigger, que es similar al SystemTrigger.
Puede encontrar más información sobre cómo escribir una clase de tarea en segundo plano en Crear y registrar una tarea en segundo plano en proceso o Crear y registrar una tarea en segundo plano fuera de proceso.
Cree un nuevo objeto MaintenanceTrigger. El segundo parámetro, OneShot, especifica si la tarea de mantenimiento se ejecutará solo una vez o continuará ejecutándose periódicamente. Si oneShot se establece en true, el primer parámetro (FreshnessTime) especifica el número de minutos que se deben esperar antes de programar la tarea en segundo plano. Si oneShot está establecido en false, FreshnessTime especifica la frecuencia con la que se ejecutará la tarea en segundo plano.
Nota:
Si FreshnessTime se establece en menos de 15 minutos, se produce una excepción al intentar registrar la tarea en segundo plano.
Este código de ejemplo crea un desencadenador que se ejecuta una vez por hora.
uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);
(Opcional) Agregar una condición
- Si es necesario, cree una condición de tarea en segundo plano para controlar cuándo se ejecuta la tarea. Una condición impide que la tarea en segundo plano se ejecute hasta que se cumpla la condición; para obtener más información, vea Establecer condiciones para ejecutar una tarea en segundo plano
En este ejemplo, la condición se establece en InternetAvailable para que el mantenimiento se ejecute cuando Internet esté disponible (o cuando esté disponible). Para obtener una lista de posibles condiciones de tarea en segundo plano, consulte SystemConditionType.
El código siguiente agrega una condición al generador de tareas de mantenimiento:
SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);
Registrar tarea en segundo plano
- Registre la tarea en segundo plano llamando a la función de registro de tareas en segundo plano. Para obtener más información sobre cómo registrar tareas en segundo plano, vea Registrar una tarea en segundo plano.
El código siguiente registra la tarea de mantenimiento. Tenga en cuenta que supone que la tarea en segundo plano se ejecuta en un proceso independiente de la aplicación porque especifica entryPoint. Si la tarea en segundo plano se ejecuta en el mismo proceso que la aplicación, no se especifica entryPoint.
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName = "Maintenance background task example";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName = "Maintenance background task example";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
Nota:
Para todas las familias de dispositivos excepto la de escritorio, si el dispositivo se queda con poca memoria, es posible que finalicen las tareas en segundo plano. Si no se muestra una excepción de memoria insuficiente o la aplicación no la controla, la tarea en segundo plano se finalizará sin advertencia y sin generar el evento OnCanceled. Esto ayuda a garantizar la experiencia del usuario de la aplicación en primer plano. La tarea en segundo plano debe diseñarse para controlar este escenario.
Nota:
Las aplicaciones de la Plataforma universal de Windows deben llamar a RequestAccessAsync antes de registrar cualquiera de los tipos de desencadenador en segundo plano.
Para asegurarse de que la aplicación universal de Windows sigue ejecutándose correctamente después de publicar una actualización en la aplicación, debes llamar a RemoveAccess y, a continuación, llamar a RequestAccessAsync cuando la aplicación se inicie después de actualizarse. Para obtener más información, vea las directrices para tareas en segundo plano.
Nota:
Los parámetros de registro de tareas en segundo plano se validan en el momento del registro. Se devuelve un error si alguno de los parámetros de registro no es válido. Asegúrese de que su aplicación maneja adecuadamente los escenarios en los que falla el registro de tareas en segundo plano. Si, en cambio, su aplicación depende de tener un objeto de registro válido después de intentar registrar una tarea, podría bloquearse.
Temas relacionados
- Crear y registrar una tarea en segundo plano en ejecución.
- Crear y registrar una tarea en segundo plano fuera de proceso
- Declarar tareas en segundo plano en el manifiesto de aplicación
- Controlar una tarea en segundo plano cancelada
- Supervisar el progreso y la finalización de la tarea en segundo plano
- Registrar una tarea de segundo plano
- Responder a los eventos del sistema con tareas en segundo plano
- Establecer condiciones para ejecutar una tarea en segundo plano
- Actualizar un icono activo desde una tarea en segundo plano
- Ejecutar una tarea en segundo plano en un temporizador
- Directrices para tareas en segundo plano
- Depurar una tarea en segundo plano
- Cómo desencadenar eventos de suspensión, reanudación y en segundo plano en aplicaciones UWP durante la depuración