Udostępnij przez


Używanie zadań w tle w aplikacjach systemu Windows

Ten artykuł zawiera omówienie korzystania z zadań w tle i opisuje sposób tworzenia nowego zadania w tle w aplikacji WinUI 3. Aby uzyskać informacje na temat migrowania aplikacji platformy UWP z zadaniami w tle do interfejsu WinUI, zobacz strategię migracji zadań w tle zestawu SDK aplikacji systemu Windows.

BackgroundTaskBuilder w zestawie SDK aplikacji systemu Windows

Zadania w tle to składniki aplikacji uruchamiane w tle bez interfejsu użytkownika. Mogą wykonywać akcje, takie jak pobieranie plików, synchronizowanie danych, wysyłanie powiadomień lub aktualizowanie kafelków. Mogą być wyzwalane przez różne zdarzenia, takie jak czas, zmiany systemu, akcje użytkownika lub powiadomienia push. Te zadania mogą być wykonywane, gdy odpowiedni wyzwalacz występuje nawet wtedy, gdy aplikacja nie jest w stanie uruchomienia.

Środowisko uruchomieniowe systemu Windows (WinRT) BackgroundTaskBuilder zostało zaprojektowane dla aplikacji platformy UWP, a wiele wyzwalaczy zadań w tle nie jest obsługiwanych w przypadku składników COM o pełnym zaufaniu. Są one obsługiwane tylko wtedy, gdy są zarejestrowane w składnikach WinRT, które są uruchamiane w ramach procesu backgroundtaskhost. W związku z tym aplikacje klasyczne zestawu SDK aplikacji systemu Windows nie mogą bezpośrednio rejestrować składników COM o pełnym zaufaniu, które mają być uruchamiane z wyzwalaczami zadań w tle. Wymagane jest obejście przez dołączenie składników WinRT do projektu. BackgroundTaskBuilder w Windows App SDK API unika tego obejścia, dzięki czemu WinUI 3 i inne aplikacje desktopowe korzystające z Windows App SDK mogą rejestrować komponenty COM z pełnym zaufaniem bezpośrednio jako zadania w tle.

Zarejestruj zadanie w tle

Poniższy przykład rejestruje zadanie w tle dla składnika COM o pełnym zaufaniu przy użyciu zestawu SDK aplikacji systemu Windows BackgroundTaskBuilder. Aby uzyskać więcej informacji, zobacz Przewodnik po strategii migracji zadań w tle .

Kod C++ do utworzenia i zarejestrowania zadania w tle jest następujący:

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

Aby utworzyć i zarejestrować zadanie w tle w języku C#, kod jest następujący:

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

Odpowiedni wpis manifestu pakietu dla zadania w tle jest następujący:

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

Pełny przykład rejestracji zadań w tle WinUI 3 można znaleźć w witrynie GitHub.