Freigeben über


Wartungstrigger verwenden

Wichtige APIs

Erfahren Sie, wie Sie die MaintenanceTrigger Klasse verwenden, um einfachen Code im Hintergrund auszuführen, während das Gerät angeschlossen ist.

Triggerobjekt zur Wartung erstellen

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 das MaintenanceTrigger, das dem SystemTriggerähnelt.

Weitere Informationen zum Schreiben einer Hintergrundaufgabenklasse finden Sie in 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" eingestellt 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 Exception 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 legt man die Bedingung auf InternetAvailable fest, sodass die Wartung ausgeführt wird, wenn das Internet verfügbar ist (oder wird, wenn es verfügbar wird). Eine Liste der möglichen Bedingungen für Hintergrundaufgaben 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);

Hintergrundaufgabe registrieren

  • 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 angenommen wird, dass Ihre Hintergrundaufgabe in einem separaten Prozess von Ihrer App ausgeführt wird, da dies durch die Spezifikation entryPointangegeben wird. Wenn Ihre Hintergrundaufgabe im gleichen Prozess wie Ihre App ausgeführt wird, geben Sie entryPointnicht 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 Arbeitsspeicherüberlauf-Ausnahme nicht erkannt 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 vorrangig zu gewährleisten. Ihre Hintergrundaufgabe sollte so konzipiert sein, dass dieses Szenario behandelt wird.

Hinweis

Apps für die universelle Windows-Plattform müssen RequestAccessAsync aufrufen, bevor sie einen der Hintergrundtriggertypen registrieren.

Um sicherzustellen, dass Ihre Universal Windows-App nach der Veröffentlichung eines Updates weiterhin ordnungsgemäß funktioniert, müssen Sie RemoveAccess aufrufen und dann RequestAccessAsync aufrufen, wenn die App nach der Aktualisierung gestartet wird. Weitere Informationen finden Sie unter 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.