Reagieren auf Systemereignisse mit Hintergrundaufgaben

Wichtige APIs

Hier erfahren Sie, wie Sie eine Hintergrundaufgabe erstellen können, die auf SystemTrigger-Ereignisse reagiert.

In diesem Thema wird davon ausgegangen, dass Sie eine Hintergrundaufgabenklasse für Ihre App geschrieben haben und dass diese Aufgabe als Reaktion auf ein vom System ausgelöstes Ereignis ausgeführt werden muss, z. B. wenn sich die Internetverfügbarkeit ändert oder der Benutzer sich anmeldet. Dieses Thema konzentriert sich auf die SystemTrigger-Klasse. 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 eines SystemTrigger-Objekts

Erstellen Sie in Ihrem App-Code ein neues SystemTrigger-Objekt. Der erste Parameter, triggerType, gibt den Typ des Systemereignistriggers an, der diese Hintergrundaufgabe aktiviert. Eine Liste der Ereignistypen finden Sie unter "SystemTriggerType".

Der zweite Parameter, OneShot, gibt an, ob die Hintergrundaufgabe nur einmal ausgeführt wird, wenn das Systemereignis das nächste Mal auftritt, oder jedes Mal, wenn das Systemereignis auftritt, bis die Registrierung der Aufgabe aufgehoben wird.

Der folgende Code gibt an, dass die Hintergrundaufgabe immer ausgeführt wird, wenn das Internet verfügbar ist:

SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
    Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);

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 die Hintergrundaufgabe für einen Hintergrundprozess, der außerhalb des Prozesses ausgeführt wird. Wenn Sie eine Hintergrundaufgabe aufrufen, die im gleichen Prozess wie die Host-App ausgeführt wird, würden Sie folgendes nicht festlegen entrypoint:

string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName   = "Internet-based background task";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName   = "Internet-based background task";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);

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 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.  

Hinweise

Um die Registrierung von Hintergrundaufgaben in Aktion anzuzeigen, laden Sie das Beispiel für Hintergrundaufgaben herunter.

Hintergrundaufgaben können als Reaktion auf SystemTrigger- und MaintenanceTrigger-Ereignisse ausgeführt werden, sie müssen jedoch weiterhin Hintergrundaufgaben im Anwendungsmanifest deklarieren. Sie müssen requestAccessAsync auch aufrufen, bevor Sie einen Hintergrundaufgabentyp registrieren.

Apps können Hintergrundaufgaben registrieren, die auf TimeTrigger-, PushNotificationTrigger- und NetworkOperatorNotificationTrigger-Ereignisse reagieren, sodass sie die Echtzeitkommunikation mit dem Benutzer bereitstellen können, auch wenn sich die App nicht im Vordergrund befindet. Weitere Informationen finden Sie unter "Unterstützen Ihrer App mit Hintergrundaufgaben".