Compartir a través de


Uso de tareas en segundo plano en aplicaciones de Windows

En este artículo se proporciona información general sobre el uso de tareas en segundo plano y se describe cómo crear una nueva tarea en segundo plano en una aplicación winUI 3. Para obtener información sobre cómo migrar las aplicaciones para UWP con tareas en segundo plano a WinUI, consulta la estrategia de migración de tareas en segundo plano Windows App SDK.

BackgroundTaskBuilder en el SDK de aplicaciones de Windows

Las tareas en segundo plano son componentes de la aplicación que se ejecutan en segundo plano sin una interfaz de usuario. Pueden realizar acciones como descargar archivos, sincronizar datos, enviar notificaciones o actualizar iconos. Pueden desencadenarse mediante varios eventos, como la hora, los cambios del sistema, las acciones del usuario o las notificaciones push. Estas tareas se pueden ejecutar cuando se produce el desencadenador correspondiente incluso cuando la aplicación no está en estado de ejecución.

Windows Runtime (WinRT) BackgroundTaskBuilder se diseñó para aplicaciones para UWP y muchos de los desencadenadores de tareas en segundo plano no se admiten para componentes COM de plena confianza. Solo se admiten si están registrados con componentes de WinRT que se inician mediante un proceso de backgroundtaskhost. Debido a esto, las aplicaciones de escritorio de Windows App SDK no pueden registrar directamente los componentes COM de plena confianza que se van a iniciar con desencadenadores de tareas en segundo plano. Requieren una solución alternativa de incluir los componentes de WinRT en el proyecto. El BackgroundTaskBuilder en la API del SDK de aplicaciones de Windows evita esta solución alternativa, por lo que WinUI 3 y otras aplicaciones de escritorio que usan Windows App SDK pueden registrar los componentes COM de plena confianza directamente con tareas en segundo plano.

Registrar una tarea en segundo plano

En el ejemplo siguiente se registra una tarea en segundo plano para un componente COM de plena confianza mediante Windows App SDK BackgroundTaskBuilder. Consulte la guía de estrategia de migración de tareas en segundo plano para obtener más información.

El código de C++ para crear y registrar una tarea en segundo plano es el siguiente:

//Using the Windows App SDK API for BackgroundTaskBuilder
winrt::Microsoft::Windows::ApplicationModel::Background::BackgroundTaskBuilder builder;
SystemTrigger trigger = SystemTrigger(SystemTriggerType::TimeZoneChange, false);
auto backgroundTrigger = trigger.as<IBackgroundTrigger>();
builder.SetTrigger(backgroundTrigger);
builder.AddCondition(SystemCondition(SystemConditionType::InternetAvailable));
builder.SetTaskEntryPointClsid(classGuid);
builder.Register(); 

Para crear y registrar la tarea en segundo plano en C#, el código es el siguiente:

//Using the Windows App SDK API for BackgroundTaskBuilder
var builder = new Microsoft.Windows.ApplicationModel.Background.BackgroundTaskBuilder();
var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);
var backgroundTrigger = trigger as IBackgroundTrigger;
builder.SetTrigger(backgroundTrigger);
builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
builder.SetTaskEntryPointClsid(classGuid);
builder.Register();

La entrada correspondiente del manifiesto del paquete para la tarea en segundo plano es la siguiente:

<Extension Category="windows.backgroundTasks" EntryPoint="Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.Task">
    <BackgroundTasks>
        <Task Type="general"/>
    </BackgroundTasks>
</Extension>

Puede encontrar un ejemplo completo de registro de tareas en segundo plano de WinUI 3 en GitHub.