Partilhar via


Usando tarefas em segundo plano em aplicativos do Windows

Este artigo fornece uma visão geral do uso de tarefas em segundo plano e descreve como criar uma nova tarefa em segundo plano em um aplicativo WinUI 3. Para obter informações sobre como migrar seus aplicativos UWP com tarefas em segundo plano para a WinUI, consulte o SDK do Aplicativo Windows Estratégia de migração de tarefas em segundo plano.

BackgroundTaskBuilder no SDK do Aplicativo Windows

As tarefas em segundo plano são componentes do aplicativo que são executados em segundo plano sem uma interface do usuário. Eles podem executar ações como baixar arquivos, sincronizar dados, enviar notificações ou atualizar blocos. Eles podem ser acionados por vários eventos, como tempo, alterações no sistema, ações do usuário ou notificações push. Essas tarefas podem ser executadas quando o gatilho correspondente ocorre mesmo quando o aplicativo não está em estado de execução.

O Windows Runtime (WinRT) BackgroundTaskBuilder foi projetado para aplicações UWP, e muitos dos gatilhos de tarefas em segundo plano não são suportados para componentes COM de confiança plena. Eles são suportados somente quando registrados com componentes do WinRT que são iniciados com um processo de backgroundtaskhost. Por causa disso, as aplicações de área de trabalho do SDK de Aplicações do Windows não podem registrar diretamente os componentes COM de total confiança para serem iniciados com gatilhos de tarefas em segundo plano. Eles exigem uma solução alternativa de incluir os componentes do WinRT no projeto. O BackgroundTaskBuilder na API do SDK de Aplicativos Windows evita essa solução alternativa para que a WinUI 3 e outros aplicativos da área de trabalho que usam o SDK de Aplicativos Windows possam registrar os componentes COM de confiança total diretamente com tarefas em segundo plano.

Registrar uma tarefa em segundo plano

O exemplo a seguir registra uma tarefa em segundo plano para um componente COM de plena confiança usando o Windows App SDK BackgroundTaskBuilder. Consulte o guia da estratégia de migração de tarefas em segundo plano para obter mais informações.

O código C++ para criar e registrar uma tarefa em segundo plano é o seguinte:

//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 criar e registrar a tarefa em segundo plano em C#, o código é o seguinte:

//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();

A entrada de manifesto do pacote correspondente para a tarefa em segundo plano é a seguinte:

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

Um exemplo completo de registro de tarefa em segundo plano do WinUI 3 pode ser encontrado em GitHub.