Dela via


Använda bakgrundsprocesser i Windows-appar

Den här artikeln innehåller en översikt över hur du använder bakgrundsaktiviteter och beskriver hur du skapar en ny bakgrundsaktivitet i en WinUI 3-app. Information om hur du migrerar UWP-appar med bakgrundsaktiviteter till WinUI finns i Windows App SDK Migreringsstrategi för bakgrundsaktiviteter.

BackgroundTaskBuilder i Windows App SDK

Bakgrundsuppgifter är appkomponenter som körs i bakgrunden utan användargränssnitt. De kan utföra åtgärder som att ladda ned filer, synkronisera data, skicka meddelanden eller uppdatera paneler. De kan utlösas av olika händelser, till exempel tid, systemändringar, användaråtgärder eller push-meddelanden. Dessa uppgifter kan utföras när motsvarande utlösare inträffar, även när appen inte körs.

Windows Runtime (WinRT) BackgroundTaskBuilder har utformats för UWP-program och många av bakgrundsaktivitetsutlösarna stöds inte för COM-komponenter med fullt förtroende. De stöds endast när de registreras med WinRT-komponenter som startas med en backgroundtaskhost process. På grund av detta kan Windows App SDK-skrivbordsprogram inte direkt registrera de fullständiga betrodda COM-komponenter som ska startas med bakgrundsaktivitetsutlösare. De kräver en lösning för att inkludera WinRT-komponenterna i projektet. BackgroundTaskBuilder- i Windows App SDK-API:et undviker den här lösningen så att WinUI 3 och andra skrivbordsprogram som använder Windows App SDK kan registrera COM-komponenter med fullständiga behörigheter direkt med bakgrundsaktiviteter.

Registrera en bakgrundsaktivitet

I följande exempel registreras en bakgrundsaktivitet för en COM-komponent med fullt förtroende med hjälp av Windows App SDK BackgroundTaskBuilder. Mer information finns i guiden migreringsstrategi för bakgrundsaktiviteter.

C++-koden för att skapa och registrera en bakgrundsaktivitet är följande:

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

För att skapa och registrera bakgrundsaktiviteten i C# är koden följande:

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

Paketmanifestposten som motsvarar bakgrundsaktiviteten är följande:

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

Ett fullständigt Exempel på registrering av bakgrundsaktiviteter i WinUI 3 finns på GitHub-.