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 MaintenanceTrigger-Objekts

In diesem Beispiel wird davon ausgegangen, dass Sie über einfachen Code verfügen, den Sie im Hintergrund ausführen können, um Ihre App zu optimieren, wenn das Gerät eingesteckt ist. Der Schwerpunkt dieses Themas liegt auf der MaintenanceTrigger-Klasse, die der SystemTrigger-Klasse ähnelt.

Weitere Informationen zum Schreiben einer Hintergrundaufgabenklasse finden Sie unter Erstellen und Registrieren einer Hintergrundaufgabe innerhalb des Prozesses oder Erstellen und Registrieren einer Hintergrundaufgabe außerhalb des Prozesses.

Erstellen Sie ein neues MaintenanceTrigger-Objekt. Der zweite Parameter OneShot gibt an, ob die Wartungsaufgabe nur einmal oder regelmäßig ausgeführt wird. Wenn OneShot auf „true“ festgelegt ist, gibt der erste Parameter (FreshnessTime) an, wie lange mit der Planung der Hintergrundaufgabe gewartet werden soll (in Minuten). 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 Registrieren der Hintergrundaufgabe 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, damit die Wartung ausgeführt wird, wenn eine Internetverbindung verfügbar ist (oder wird). Eine Liste mit möglichen Hintergrundaufgabenbedingungen finden Sie unter SystemConditionType.

Der folgende Code fügt dem Hintergrundaufgaben-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 Funktion zum Registrieren der Hintergrundaufgabe aufrufen. Weitere Informationen zum Registrieren von Hintergrundaufgaben finden Sie unter Registrieren einer Hintergrundaufgabe.

Der folgende Code registriert die Wartungsaufgabe. Beachten Sie, dass davon ausgegangen wird, dass die Hintergrundaufgaben in einem von Ihrer App getrennten Prozess ausgeführt wird, da entryPoint angegeben wird. Wenn die Hintergrundaufgabe in demselben Prozess wie Ihre App ausgeführt wird, wird entryPoint nicht angegeben.

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

Für alle Gerätefamilien mit Ausnahme von Desktops können Hintergrundaufgaben beendet werden, wenn der Arbeitsspeicher des Geräts knapp wird. Wenn eine Ausnahme über wenig Arbeitsspeicher nicht angezeigt oder von der App nicht behandelt wird, wird die Hintergrundaufgabe ohne Warnung und ohne Auslösen des OnCanceled-Ereignisses beendet. Dadurch soll die Benutzerfreundlichkeit der App im Vordergrund sichergestellt werden. Entwerfen Sie die Hintergrundaufgabe so, dass dieses Szenario behandelt werden kann.

Hinweis

Universelle Windows-Plattform Apps müssen RequestAccessAsync aufrufen, bevor sie einen der Hintergrundtriggertypen registrieren.

Rufen Sie RemoveAccess und anschließend RequestAccessAsync auf, wenn die App nach der Aktualisierung gestartet wird, um sicherzustellen, dass Ihre universelle Windows-App nach der Veröffentlichung eines Updates der App weiterhin ordnungsgemäß ausgeführt 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. Bei ungültigen Registrierungsparametern wird ein Fehler zurückgegeben. Stellen Sie sicher, dass Ihre App problemlos mit Szenarien ohne erfolgreiche Registrierung von Hintergrundaufgaben zurechtkommt. Andernfalls stürzt die App unter Umständen ab, wenn sie so konzipiert ist, dass nach dem Versuch, eine Aufgabe zu registrieren, ein gültiges Registrierungsobjekt vorhanden sein muss.