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".
Zugehörige Themen
- Erstellen und Registrieren einer Hintergrundaufgabe außerhalb von Prozessen
- Erstellen und Registrieren einer Hintergrundaufgabe innerhalb von Prozessen
- Deklarieren von Hintergrundaufgaben im Anwendungsmanifest
- Behandeln einer abgebrochenen Hintergrundaufgabe
- Überwachen des Status und Abschlusses von Hintergrundaufgaben
- Registrieren einer Hintergrundaufgabe
- Festlegen von Bedingungen zum Ausführen einer Hintergrundaufgabe
- Aktualisieren einer Live-Kachel über eine Hintergrundaufgabe
- Verwenden eines Wartungsauslösers
- Ausführen einer Hintergrundaufgabe für einen Timer
- Richtlinien für Hintergrundaufgaben
- Debuggen einer Hintergrundaufgabe
- Auslösen von Anhalte-, Fortsetzungs- und Hintergrundereignissen in UWP-Apps (beim Debuggen)