Reagieren auf Systemereignisse mit HintergrundaufgabenRespond to system events with background tasks

Wichtige APIsImportant APIs

Erfahren Sie, wie Sie eine Hintergrundaufgabe erstellen, die auf systemtriggerereignisse antwortet.Learn how to create a background task that responds to SystemTrigger events.

Dieses Thema setzt voraus, dass Sie für Ihre App eine Hintergrundaufgabenklasse 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 sich der Benutzer anmeldet.This topic assumes that you have a background task class written for your app, and that this task needs to run in response to an event triggered by the system such as when internet availability changes or the user logging in. Der Schwerpunkt dieses Themas liegt auf der SystemTrigger-Klasse.This topic focuses on the SystemTrigger class. 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.More information on writing a background task class is available in Create and register an in-process background task or Create and register an out-of-process background task.

Erstellen eines SystemTrigger-ObjektsCreate a SystemTrigger object

Erstellen Sie in Ihrem App-Code ein neues SystemTrigger-Objekt.In your app code, create a new SystemTrigger object. triggerType ist der erste Parameter und gibt den Typ des Systemereignis-Triggers zur Aktivierung der Hintergrundaufgabe an.The first parameter, triggerType, specifies the type of system event trigger that will activate this background task. Eine Liste mit Ereignistypen finden Sie unter SystemTriggerType.For a list of event types, see SystemTriggerType.

Der zweite Parameter (OneShot) gibt an, ob die Hintergrundaufgabe nur einmal ausgeführt wird, wenn das Systemereignis das nächste Mal eintritt, oder ob die Hintergrundaufgabe beim Auslösen des Systemereignisses immer ausgeführt wird, bis die Registrierung der Aufgabe aufgehoben wird.The second parameter, OneShot, specifies whether the background task will run only once the next time the system event occurs or every time the system event occurs until the task is unregistered.

Der folgende Code gibt an, dass die Hintergrundaufgabe immer ausgeführt wird, wenn das Internet verfügbar wird:The following code specifies that the background task runs whenever the Internet becomes available:

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 HintergrundaufgabeRegister the background task

Registrieren Sie die Hintergrundaufgabe, indem Sie die Funktion zum Registrieren der Hintergrundaufgabe aufrufen.Register the background task by calling your background task registration function. Weitere Informationen zum Registrieren von Hintergrundaufgaben finden Sie unter Registrieren einer Hintergrundaufgabe.For more information on registering background tasks, see Register a background task.

Der folgende Code registriert die Hintergrundaufgabe für einen Hintergrundprozess, der außerhalb des Prozesses ausgeführt wird.The following code registers the background task for a background process that runs out-of-process. Wenn Sie eine Hintergrundaufgabe aufrufen, die im gleichen Prozess wie die Host-App ausgeführt wird, legen Sie nicht entrypoint fest:If you were calling a background task that runs in the same process as the host app, you would not set 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 requestaccessasync aufrufen, bevor Sie einen der Hintergrund Auslösertypen registrieren.Universal Windows Platform apps must call RequestAccessAsync before registering any of the background trigger types.

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 weiterhin ordnungsgemäß ausgeführt wird.To ensure that your Universal Windows app continues to run properly after you release an update, you must call RemoveAccess and then call RequestAccessAsync when your app launches after being updated. Weitere Informationen finden Sie unter Richtlinien für Hintergrundaufgaben.For more information, see Guidelines for background tasks.

Hinweis

Parameter für die Registrierung von Hintergrundaufgaben werden zum Zeitpunkt der Registrierung überprüft.Background task registration parameters are validated at the time of registration. Bei ungültigen Registrierungsparametern wird ein Fehler zurückgegeben.An error is returned if any of the registration parameters are invalid. 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.Ensure that your app gracefully handles scenarios where background task registration fails - if instead your app depends on having a valid registration object after attempting to register a task, it may crash.  

BemerkungenRemarks

Laden Sie das Beispiel zu Hintergrundaufgaben herunter, um die Registrierung der Hintergrundaufgabe in Aktion zu sehen.To see background task registration in action, download the background task sample.

Hintergrundaufgaben können als Reaktion auf die Ereignisse SystemTrigger und MaintenanceTrigger ausgeführt werden. Dennoch ist das Deklarieren von Hintergrundaufgaben im Anwendungsmanifest erforderlich.Background tasks can run in response to SystemTrigger and MaintenanceTrigger events, but you still need to Declare background tasks in the application manifest. Vor dem Registrieren einer Hintergrundaufgabe müssen Sie außerdem RequestAccessAsync aufrufen.You must also call RequestAccessAsync before registering any background task type.

Apps können Hintergrundaufgaben registrieren, die auf die Ereignisse TimeTrigger, PushNotificationTrigger und NetworkOperatorNotificationTrigger reagieren. So können die Apps eine Echtzeitkommunikation mit dem Benutzer bereitstellen, auch wenn die App sich nicht im Vordergrund befindet.Apps can register background tasks that respond to TimeTrigger, PushNotificationTrigger, and NetworkOperatorNotificationTrigger events, enabling them to provide real-time communication with the user even when the app is not in the foreground. Weitere Informationen finden Sie unter unterstützen der APP mit Hintergrundaufgaben.For more information, see Support your app with background tasks.