Delen via


Een onderhoudstrigger gebruiken

Belangrijke API's

Leer hoe je de MaintenanceTrigger klasse kunt gebruiken om lichte code op de achtergrond te draaien terwijl het apparaat is ingeplugd.

Een onderhoudstriggerobject maken

In dit voorbeeld wordt ervan uitgegaan dat u lichtgewicht code hebt die u op de achtergrond kunt uitvoeren om uw app te verbeteren terwijl het apparaat is aangesloten. Dit onderwerp is gericht op maintenanceTrigger, vergelijkbaar met SystemTrigger.

Meer informatie over het schrijven van een achtergrondtaak-klasse is beschikbaar in Een in-proces achtergrondtaak maken en registreren of Een buiten-proces achtergrondtaak maken en registreren.

Maak een nieuw MaintenanceTrigger object aan. De tweede parameter, OneShot, geeft aan of de onderhoudstaak slechts eenmaal wordt uitgevoerd of periodiek wordt uitgevoerd. Als OneShot- is ingesteld op true, geeft de eerste parameter (FreshnessTime) het aantal minuten op dat moet worden gewacht voordat de achtergrondtaak wordt gepland. Als OneShot is ingesteld op false, geeft FreshnessTime aan hoe vaak de achtergrondtaak wordt uitgevoerd.

Opmerking

Als FreshnessTime is ingesteld op minder dan 15 minuten, wordt er een uitzondering opgetrokken wanneer geprobeerd wordt de achtergrondtaak te registreren.

Met deze voorbeeldcode wordt een trigger gemaakt die eenmaal per uur wordt uitgevoerd.

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

(Optioneel) Een voorwaarde toevoegen

In dit voorbeeld is de voorwaarde ingesteld op InternetAvailable , zodat onderhoud wordt uitgevoerd wanneer internet beschikbaar is (of wanneer deze beschikbaar is). Zie SystemConditionType voor een lijst met mogelijke achtergrondtaken.

Met de volgende code wordt een voorwaarde toegevoegd aan de opbouwfunctie voor onderhoudstaken:

SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
    Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);

De achtergrondtaak registreren

  • Registreer de achtergrondtaak door de registratiefunctie voor achtergrondtaken aan te roepen. Zie Een achtergrondtaak registrerenvoor meer informatie over het registreren van achtergrondtaken.

Met de volgende code wordt de onderhoudstaak geregistreerd. Houd er rekening mee dat uw achtergrondtaak wordt uitgevoerd in een afzonderlijk proces van uw app, omdat hiermee wordt aangegeven entryPoint. Als uw achtergrondtaak in hetzelfde proces als uw app wordt uitgevoerd, hoeft u entryPoint niet op te geven.

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

Opmerking

Voor alle apparaatfamilies, behalve desktop, kunnen achtergrondtaken worden beëindigd als het apparaat weinig geheugen heeft. Als er geen out of memory-exceptie optreedt of als de app deze niet afhandelt, wordt de achtergrondtaak zonder waarschuwing beëindigd en zonder de OnCanceled-gebeurtenis aan te roepen. Dit helpt om de gebruikerservaring van de app voorop te stellen. Uw achtergrondtaak moet zijn ontworpen om dit scenario af te handelen.

Opmerking

Universele Windows-platform-apps moeten RequestAccessAsync- aanroepen voordat een van de typen achtergrondtriggers wordt geregistreerd.

Als u ervoor wilt zorgen dat uw Universele Windows-app correct blijft worden uitgevoerd nadat u een update voor uw app hebt uitgebracht, moet u RemoveAccess aanroepen en vervolgens RequestAccessAsync aanroepen wanneer uw app wordt gestart nadat deze is bijgewerkt. Zie Richtlijnen voor achtergrondtakenvoor meer informatie.

Opmerking

Parameters voor registratie van achtergrondtaken worden gevalideerd op het moment van registratie. Er wordt een fout geretourneerd als een van de registratieparameters ongeldig is. Zorg ervoor dat uw app probleemloos scenario's verwerkt waarbij de registratie van achtergrondtaken mislukt. Als uw app in plaats daarvan afhankelijk is van een geldig registratieobject nadat u een taak hebt geregistreerd, kan deze vastlopen.