Freigeben über


Verwenden eines Wartungsauslösers

Wichtige APIs

Erfahren Sie, wie Sie die MaintenanceTrigger-Klasse zum Ausführen von einfachem Code im Hintergrund verwenden, während das Gerät angeschlossen ist.

Erstellen eines Wartungstriggerobjekts

In diesem Beispiel wird davon ausgegangen, dass Sie einfachen Code haben, den Sie im Hintergrund ausführen können, um Ihre App zu verbessern, während das Gerät angeschlossen ist. Dieses Thema konzentriert sich auf den MaintenanceTrigger, der systemTrigger ähnelt.

Weitere Informationen zum Schreiben einer Hintergrundaufgabenklasse finden Sie unter "Erstellen und Registrieren einer In-Process-Hintergrundaufgabe " oder " Erstellen und Registrieren einer Hintergrundaufgabe außerhalb von Prozessen".

Erstellen Sie ein neues MaintenanceTrigger-Objekt. Der zweite Parameter, OneShot, gibt an, ob die Wartungsaufgabe nur einmal ausgeführt wird oder in regelmäßigen Abständen ausgeführt wird. Wenn OneShot auf "true" festgelegt ist, gibt der erste Parameter (FreshnessTime) die Anzahl der Minuten an, die gewartet werden sollen, bevor die Hintergrundaufgabe geplant wird. Wenn OneShot auf "false" festgelegt ist, gibt FreshnessTime an, wie oft die Hintergrundaufgabe ausgeführt wird.

Hinweis

Wenn FreshnessTime auf weniger als 15 Minuten festgelegt ist, wird beim Versuch, die Hintergrundaufgabe zu registrieren, eine Ausnahme ausgelöst.

Dieser Beispielcode erstellt einen Trigger, der einmal pro Stunde ausgeführt wird.

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

(Optional) Hinzufügen einer Bedingung

In diesem Beispiel wird die Bedingung auf "InternetAvailable " festgelegt, sodass die Wartung ausgeführt wird, wenn das Internet verfügbar ist (oder wenn sie verfügbar ist). Eine Liste möglicher Hintergrundaufgabenbedingungen finden Sie unter "SystemConditionType".

Der folgende Code fügt dem Wartungsaufgaben-Generator eine Bedingung hinzu:

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

Registrieren der Hintergrundaufgabe

  • Registrieren Sie die Hintergrundaufgabe, indem Sie die Registrierungsfunktion für Hintergrundaufgaben aufrufen. Weitere Informationen zum Registrieren von Hintergrundaufgaben finden Sie unter Registrieren einer Hintergrundaufgabe.

Der folgende Code registriert den Wartungsvorgang. Beachten Sie, dass die Hintergrundaufgabe in einem separaten Prozess von Ihrer App ausgeführt wird, da sie angibt entryPoint. Wenn Ihre Hintergrundaufgabe im gleichen Prozess wie Ihre App ausgeführt wird, geben entryPointSie nicht an.

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

Hinweis

Bei allen Gerätefamilien mit Ausnahme des Desktops können Hintergrundaufgaben beendet werden, wenn das Gerät nicht genügend Arbeitsspeicher hat. Wenn eine Ausnahme außerhalb des Arbeitsspeichers nicht angezeigt wird oder die App sie nicht behandelt, wird die Hintergrundaufgabe ohne Warnung und ohne Auslösen des OnCanceled-Ereignisses beendet. Dies trägt dazu bei, die Benutzererfahrung der App im Vordergrund sicherzustellen. Ihre Hintergrundaufgabe sollte so konzipiert sein, dass dieses Szenario behandelt wird.

Hinweis

Universelle Windows-Plattform Apps müssen anrufen RequestAccessAsync vor der Registrierung eines der Hintergrundtriggertypen.

Um sicherzustellen, dass Ihre universelle Windows-App nach der Veröffentlichung eines Updates für Ihre App weiterhin ordnungsgemäß ausgeführt wird, müssen Sie RemoveAccess aufrufen und dann RequestAccessAsync aufrufen, wenn die App nach der Aktualisierung gestartet wird. Weitere Informationen finden Sie in den Richtlinien für Hintergrundaufgaben.

Hinweis

Parameter für die Registrierung von Hintergrundaufgaben werden zum Zeitpunkt der Registrierung überprüft. Wenn einer der Registrierungsparameter ungültig ist, wird ein Fehler zurückgegeben. Stellen Sie sicher, dass Ihre App Szenarien, in denen die Registrierung von Hintergrundaufgaben fehlschlägt, ordnungsgemäß behandelt. Wenn ihre App stattdessen von einem gültigen Registrierungsobjekt abhängt, nachdem Sie versucht haben, eine Aufgabe zu registrieren, kann es abstürzen.