Unterstützen Ihrer App mit HintergrundaufgabenSupport your app with background tasks

In den Themen in diesem Abschnitt wird gezeigt, wie Sie einfachen Code im Hintergrund ausführen, um auf Auslöser zu reagieren.The topics in this section show you how to make lightweight code run in the background in response to triggers. Sie können mit Hintergrundaufgaben Funktionen bereitstellen, wenn Ihre App gerade ausgesetzt ist oder nicht ausgeführt wird.You can use background tasks to provide functionality when your app is suspended or not running. Sie können Hintergrundaufgaben auch für Echtzeitkommunikations-Apps wie VOIP, E-Mail und Sofortnachrichten verwenden.You can also use background tasks for real-time communication apps like VOIP, mail, and IM.

Wiedergeben von Medien im HintergrundPlaying media in the background

Ab Windows 10 (Version 1607) ist die Wiedergabe von Audio im Hintergrund sehr viel einfacher.Starting in Windows 10, version 1607, playing audio in the background is much easier. Weitere Informationen finden Sie unter Wiedergeben von Medien im Hintergrund.See Play media in the background for more information.

Hintergrundaufgaben innerhalb und außerhalb von ProzessenIn-process and out-of-process background tasks

Es gibt zwei Ansätze für die Implementierung von Hintergrundaufgaben:There are two approaches to implementing background tasks:

  • In-Process: die APP und Ihr Hintergrundprozess werden im gleichen Prozess ausgeführt.In-process: the app and its background process run in the same process
  • Out-of-Process: die APP und der Hintergrundprozess werden in separaten Prozessen ausgeführt.Out-of-process: the app and the background process run in separate processes.

Die Unterstützung für Hintergrundaufgaben innerhalb von Prozessen wurde mit Windows 10 (Version 1607) eingeführt, um das Schreiben von Hintergrundaufgaben zu vereinfachen.In-process background support was introduced in Windows 10, version 1607, to simplify writing background tasks. Es ist jedoch weiterhin möglich, Hintergrundaufgaben außerhalb von Prozessen zu schreiben.But you can still write out-of-process background tasks. Unter Richtlinien für Hintergrundaufgaben finden Sie Empfehlungen dazu, wann Sie eine Hintergrundaufgabe innerhalb eines Prozesses und wann außerhalb eines Prozesses schreiben sollten.See Guidelines for background tasks for recommendations on when to write an in-process versus out-of-process background task.

Out-of-Process-Hintergrundaufgaben sind stabiler, da der Hintergrundprozess den App-Prozess nicht durchführen kann, wenn etwas schief geht.Out-of-process background tasks are more resilient because the background process can't bring down your app process if something goes wrong. Die Resilienz kommt jedoch zu einer größeren Komplexität, um die prozessübergreifende Kommunikation zwischen der APP und der Hintergrundaufgabe zu verwalten.But the resiliency comes at the price of greater complexity to manage the cross-process communication between the app and the background task.

Out-of-Process-Hintergrundaufgaben werden als Lightweight-Klassen implementiert, die die ibackgroundtask -Schnittstelle implementieren, die das Betriebssystem in einem separaten Prozess (backgroundtaskhost.exe) ausführt.Out-of-process background tasks are implemented as lightweight classes that implement the IBackgroundTask interface that the OS runs in a separate process (backgroundtaskhost.exe). Registrieren Sie eine Hintergrundaufgabe mithilfe der backgroundtaskbuilder -Klasse.Register a background task by using the BackgroundTaskBuilder class. Der Klassenname wird beim Registrieren der Hintergrundaufgabe zum Angeben des Einstiegspunkts verwendet.The class name is used to specify the entry point when you registering the background task.

In Windows 10 (Version 1607) können Sie Hintergrundaktivitäten aktivieren, ohne eine Hintergrundaufgabe zu erstellen.In Windows 10, version 1607, you can enable background activity without creating a background task. Sie können stattdessen den Hintergrund Code direkt innerhalb des Prozesses der Vordergrund Anwendung ausführen.You can instead run your background code directly inside the foreground application's process.

Erste Schritte für das schnelle Erstellen von Hintergrundaufgaben finden Sie unter Erstellen und Registrieren einer Hintergrundaufgabe innerhalb von Prozessen.To get started quickly with in-process background tasks, see Create and register an in-process background task.

Erste Schritte für das schnelle Erstellen von Hintergrundaufgaben außerhalb von Prozessen finden Sie unter Erstellen und Registrieren einer Hintergrundaufgabe außerhalb von Prozessen.To get started quickly with out-of-process background tasks, see Create and register an out-of-process background task.

Tipp

 Ab Windows 10 müssen Sie eine App nicht mehr auf dem Sperrbildschirm platzieren, damit eine Hintergrundaufgabe dafür registriert werden kann. Starting with Windows 10, you no longer need to place an app on the lock screen as a prerequisite for registering a background task for it.

Hintergrundaufgaben für SystemereignisseBackground tasks for system events

Ihre App kann auf Systemereignisse reagieren, indem mit der SystemTrigger-Klasse eine Hintergrundaufgabe registriert wird.Your app can respond to system-generated events by registering a background task with the SystemTrigger class. Eine APP kann einen der folgenden System Ereignis Trigger verwenden (definiert in systemtriggertype).An app can use any of the following system event triggers (defined in SystemTriggerType)

TriggernameTrigger name BESCHREIBUNGDescription
InternetAvailableInternetAvailable Das Internet wird verfügbar.The Internet becomes available.
NetworkStateChangeNetworkStateChange Eine Netzwerkänderung findet statt, z. B. werden die Kosten oder Verbindungsoptionen geändert.A network change such as a change in cost or connectivity occurs.
OnlineIdConnectedStateChangeOnlineIdConnectedStateChange Die mit dem Konto verbundene Online-ID wird geändert.Online ID associated with the account changes.
SmsReceivedSmsReceived Auf einem installierten mobilen Breitbandgerät geht eine SMS ein.A new SMS message is received by an installed mobile broadband device.
TimeZoneChangeTimeZoneChange Die Zeitzone auf dem Gerät ändert sich (z. B. wenn das System die Uhrzeit auf die Sommerzeit umstellt).The time zone changes on the device (for example, when the system adjusts the clock for daylight saving time).

Weitere Informationen finden Sie unter reagieren auf Systemereignisse mit Hintergrundaufgaben.For more info see Respond to system events with background tasks.

Bedingungen für HintergrundaufgabenConditions for background tasks

Über Bedingungen können Sie steuern, wann die Hintergrundaufgabe ausgeführt wird, auch nachdem sie ausgelöst wurde.You can control when the background task runs, even after it is triggered, by adding a condition. Nach dem Auslösen wird die Hintergrundaufgabe erst ausgeführt, wenn alle ihre Bedingungen erfüllt sind.Once triggered, a background task will not run until all of its conditions are met. Sie können die folgenden Bedingungen verwenden (dargestellt durch die SystemConditionType-Enumeration).The following conditions (represented by the SystemConditionType enumeration) can be used.

BedingungsnameCondition name BESCHREIBUNGDescription
InternetAvailableInternetAvailable Das Internet muss verfügbar sein.The Internet must be available.
InternetNotAvailableInternetNotAvailable Das Internet darf nicht verfügbar sein.The Internet must be unavailable.
SessionConnectedSessionConnected Die Sitzung muss verbunden sein.The session must be connected.
SessionDisconnectedSessionDisconnected Die Sitzung darf nicht verbunden sein.The session must be disconnected.
UserNotPresentUserNotPresent Der Benutzer muss abwesend sein.The user must be away.
UserPresentUserPresent Der Benutzer muss anwesend sein.The user must be present.

Fügen Sie die InternetAvailable-Bedingung zur Hintergrundaufgabe BackgroundTaskBuilder.AddCondition hinzu, um die Hintergrundaufgabe zu verzögern, bis der Netzwerkstapel ausgeführt wird.Add the InternetAvailable condition to your background task BackgroundTaskBuilder.AddCondition to delay triggering the background task until the network stack is running. Diese Bedingung spart Strom, da die Hintergrundaufgabe erst ausgeführt wird, wenn das Netzwerk verfügbar ist.This condition saves power because the background task won't execute until the network is available. Dieser Zustand stellt keine Aktivierung in Echtzeit bereit.This condition does not provide real-time activation.

Wenn für Ihre Hintergrundaufgabe eine Netzwerk Konnektivität erforderlich ist, legen Sie isnetworkressitzig fest, um sicherzustellen, dass das Netzwerk während der Ausführung des Hintergrund Tasks weiterhin aktiv bleibt.If your background task requires network connectivity, set IsNetworkRequested to ensure that the network stays up while the background task runs. Dies weist die Infrastruktur für Hintergrundaufgaben an, die Netzwerkverbindung für die Ausführung der Aufgabe auch dann beizubehalten, wenn sich das Gerät im verbundenen Standbymodus befindet.This tells the background task infrastructure to keep the network up while the task is executing, even if the device has entered Connected Standby mode. Wenn die Hintergrundaufgabe isnetworkrequsysnicht festgelegt hat, kann Ihre Hintergrundaufgabe nicht auf das Netzwerk zugreifen, wenn der verbundene Standbymodus verwendet wird (z. b. wenn der Bildschirm eines Telefons ausgeschaltet ist).  If your background task does not set IsNetworkRequested, then your background task will not be able to access the network when in Connected Standby mode (for example, when a phone's screen is turned off.)   Weitere Informationen zu Hintergrundaufgaben Bedingungen finden Sie unter Festlegen von Bedingungen für das Ausführen eines HintergrundTasks.For more info about background task conditions, see Set conditions for running a background task.

Anforderungen für das AnwendungsmanifestApplication manifest requirements

Damit Ihre App eine Hintergrundaufgabe registrieren kann, die außerhalb eines Prozesses ausgeführt wird, muss sie im Anwendungsmanifest deklariert werden.Before your app can successfully register a background task that runs out-of-process, it must be declared in the application manifest. Hintergrundaufgaben, die im gleichen Prozess wie ihre Host-App ausgeführt werden, müssen nicht im Anwendungsmanifest deklariert werden.Background tasks that run in the same process as their host app do not need to be declared in the application manifest. Weitere Informationen finden Sie unter Deklarieren von Hintergrundaufgaben im Anwendungs Manifest.For more info see Declare background tasks in the application manifest.

HintergrundaufgabenBackground tasks

Die folgenden Echtzeitauslöser können verwendet werden, um einfachen benutzerdefinierten Code im Hintergrund auszuführen:The following real-time triggers can be used to run lightweight custom code in the background:

EchtzeitauslöserReal-time trigger BESCHREIBUNGDescription
Steuerungs KanalControl Channel Hintergrundaufgaben können eine Verbindung aufrechterhalten und Nachrichten auf dem Steuerkanal mithilfe des ControlChannelTrigger empfangen.Background tasks can keep a connection alive, and receive messages on the control channel, by using the ControlChannelTrigger. Wenn Ihre App ein Socket überwacht, können Sie den Socketbroker statt ControlChannelTrigger verwenden.If your app is listening to a socket, you can use the Socket Broker instead of the ControlChannelTrigger. Weitere Informationen zur Verwendung der Socketbroker finden Sie unter SocketActivityTrigger.For more details on using the Socket Broker, see SocketActivityTrigger. ControlChannelTrigger wird unter Windows Phone nicht unterstützt.The ControlChannelTrigger is not supported on Windows Phone.
ZeitgeberTimer Hintergrundaufgaben können in einem Intervall von bis zu 15 Minuten ausgeführt werden, und sie können mithilfe des TimeTrigger auf die Ausführung zu einer bestimmten Zeit festgelegt werden.Background tasks can run as frequently as every 15 minutes, and they can be set to run at a certain time by using the TimeTrigger. Weitere Informationen finden Sie im Thema Ausführen einer Hintergrundaufgabe mit einem Timer.For more info see Run a background task on a timer.
PushbenachrichtigungPush Notification Hintergrundaufgaben reagieren auf den PushNotificationTrigger, um unformatierte Pushbenachrichtigungen zu empfangen.Background tasks respond to the PushNotificationTrigger to receive raw push notifications.

HinweisNote  

Universelle Windows-Apps müssen jedoch RequestAccessAsync aufrufen, bevor Hintergrundtrigger-Typen registriert werden.Universal Windows 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, 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.

Grenzwerte für die Anzahl der auslöserinstanzen: Es gibt Grenzwerte für die Anzahl der Instanzen einiger Trigger, die eine APP registrieren kann.Limits on the number of trigger instances: There are limits to how many instances of some triggers an app can register. Eine APP kann nur " applicationtrigger", " mediaprocessingtrigger " und " deviceusertrigger " einmal pro Instanz der APP registrieren.An app can only register ApplicationTrigger, MediaProcessingTrigger and DeviceUseTrigger once per instance of the app. Wenn eine APP diesen Grenzwert überschreitet, löst die Registrierung eine Ausnahme aus.If an app goes over this limit, registration will throw an exception.

SystemereignistriggerSystem event triggers

Die SystemTriggerType-Enumeration stellt die folgenden Systemereignistrigger dar:The SystemTriggerType enumeration represents the following system event triggers:

TriggernameTrigger name BESCHREIBUNGDescription
UserPresentUserPresent Die Hintergrundaufgabe wird ausgelöst, wenn der Benutzer anwesend ist.The background task is triggered when the user becomes present.
UserAwayUserAway Die Hintergrundaufgabe wird ausgelöst, wenn der Benutzer abwesend ist.The background task is triggered when the user becomes absent.
ControlChannelResetControlChannelReset Die Hintergrundaufgabe wird ausgelöst, wenn ein Steuerkanal zurückgesetzt wird.The background task is triggered when a control channel is reset.
SessionConnectedSessionConnected Die Hintergrundaufgabe wird ausgelöst, wenn die Sitzung eine Verbindung herstellt.The background task is triggered when the session is connected.

  Das folgende Systemereignis löst ein Signal aus, wenn der Benutzer eine App auf den oder aus dem Sperrbildschirm verschoben hat.The following system event triggers signal when the user has moved an app on or off the lock screen.

TriggernameTrigger name BESCHREIBUNGDescription
LockScreenApplicationAddedLockScreenApplicationAdded Dem Sperrbildschirm wird eine App-Kachel hinzugefügt.An app tile is added to the lock screen.
LockScreenApplicationRemovedLockScreenApplicationRemoved Eine App-Kachel wird vom Sperrbildschirm entfernt.An app tile is removed from the lock screen.

 

Ressourcenbeschränkungen für HintergrundaufgabenBackground task resource constraints

Hintergrundaufgaben sind einfach.Background tasks are lightweight. Beschränken Sie die Ausführung von Hintergrundaufgaben auf ein Minimum, um die beste Benutzererfahrung für Vordergrund-Apps und Akkulaufzeit sicherzustellen.Keeping background execution to a minimum ensures the best user experience with foreground apps and battery life. Dies wird erzwungen, indem auf Hintergrundaufgaben Ressourcenbeschränkungen angewendet werden.This is enforced by applying resource constraints to background tasks.

Hintergrundaufgaben sind auf 30 Sekunden der Gesamtbetrachtungszeit beschränkt.Background tasks are limited to 30 seconds of wall-clock usage.

ArbeitsspeicherbeschränkungenMemory constraints

Aufgrund der Ressourcenbeschränkungen für Geräte mit wenig Arbeitsspeicher kann für Hintergrundaufgaben ein Arbeitsspeicherlimit gelten. Dieses gibt die maximale Menge von Arbeitsspeicher an, der von der Hintergrundaufgabe verwendet werden kann.Due to the resource constraints for low-memory devices, background tasks may have a memory limit that determines the maximum amount of memory the background task can use. Wenn die Hintergrundaufgabe einen Vorgang ausführt, der dieses Limit überschreiten würde, tritt ein Fehler und ggf. eine Ausnahme über zu wenig Arbeitsspeicher auf, die von der Aufgabe behandelt werden kann.If your background task attempts an operation that would exceed this limit, the operation will fail and may generate an out-of-memory exception--which the task can handle. Wenn die Ausnahme über wenig Arbeitsspeicher von der Aufgabe nicht behandelt wird oder eine solche Ausnahme je nach Vorgang überhaupt nicht generiert wird, wird die Aufgabe sofort beendet.If the task does not handle the out-of-memory exception, or the nature of the attempted operation is such that an out-of-memory exception was not generated, then the task will be terminated immediately.

Sie können die MemoryManager-APIs verwenden, um durch Abfrage von aktueller Speicherauslastung und Limit die Obergrenze (falls vorhanden) zu ermitteln und die fortlaufende Speichernutzung der Hintergrundaufgabe zu überwachen.You can use the MemoryManager APIs to query your current memory usage and limit in order to discover your cap (if any), and to monitor your background task's ongoing memory usage.

Limit pro Gerät für Apps mit Hintergrundaufgaben für Geräte mit wenig ArbeitsspeicherPer-device limit for apps with background tasks for low-memory devices

Geräte mit beschränktem Arbeitsspeicher haben ein Limit für die Anzahl von Apps, die gleichzeitig auf einem Gerät installierbar sind und Hintergrundaufgaben nutzen können.On memory-constrained devices, there is a limit to the number of apps that can be installed on a device and use background tasks at any given time. Wenn diese Zahl überschritten wird, tritt für den Aufruf von RequestAccessAsync, der zum Registrieren aller Hintergrundaufgaben erforderlich ist, ein Fehler auf.If this number is exceeded, the call to RequestAccessAsync, which is required to register all background tasks, will fail.

StromsparmodusBattery Saver

Solange Sie die App nicht davon befreien, bei aktiviertem Stromsparmodus Hintergrundaufgaben auszuführen und Pushbenachrichtigungen zu empfangen, verhindert der Stromsparmodus (falls aktiviert) die Ausführung von Hintergrundaufgaben, falls das Gerät nicht mit einer externen Stromquelle verbunden ist und der Akku eine angegebene Restmenge unterschreitet.Unless you exempt your app so that it can still run background tasks and receive push notifications when Battery Saver is on, the Battery Saver feature, when enabled, will prevent background tasks from running when the device is not connected to external power and the battery goes below a specified amount of power remaining. Sie können Hintergrundaufgaben aber weiterhin registrieren.This will not prevent you from registering background tasks.

Informationen zu Unternehmens-apps und apps, die nicht im Microsoft Store veröffentlicht werden, finden Sie unter Ausführen im Hintergrund auf unbestimmte Zeit , um zu erfahren, wie Sie eine Hintergrundaufgabe oder eine erweiterte Ausführungs Sitzung auf unbestimmte Zeit im Hintergrund ausführen.However, for enterprise apps, and apps that will not be published in the Microsoft Store, see Run in the background indefinitely to learn how to use a capabilities to run a background task or extended execution session in the background indefinitely.

Die Ressourcen für Hintergrundaufgabe erlauben die Kommunikation in Echtzeit.Background task resource guarantees for real-time communication

Um zu verhindern, dass Ressourcenkontingente die Echtzeitkommunikation stören, erhalten Hintergrundaufgaben, die den ControlChannelTrigger und den PushNotificationTrigger verwenden, garantierte Ressourcenkontingente (CPU) für jede ausgeführte Aufgabe.To prevent resource quotas from interfering with real-time communication functionality, background tasks using the ControlChannelTrigger and PushNotificationTrigger receive guaranteed CPU resource quotas for every running task. Die Ressourcenkontingente sind wie oben erwähnt und bleiben für diese Hintergrundaufgaben unverändert.The resource quotas are as mentioned above, and remain constant for these background tasks.

Ihre App benötigt keine anderen Funktionen, um die garantierten Ressourcenkontingente für ControlChannelTrigger- und PushNotificationTrigger-Hintergrundaufgaben zu erhalten.Your app doesn't have to do anything differently to get the guaranteed resource quotas for ControlChannelTrigger and PushNotificationTrigger background tasks. Das System behandelt sie immer als kritische Hintergrundaufgaben.The system always treats these as critical background tasks.

WartungsauslöserMaintenance trigger

Wartungsaufgaben werden nur ausgeführt, wenn das Gerät an die Stromversorgung angeschlossen ist.Maintenance tasks only run when the device is plugged in to AC power. Weitere Informationen finden Sie unter Verwenden eines Wartungs Auslösers.For more info see Use a maintenance trigger.

Hintergrundaufgaben für Sensoren und GeräteBackground tasks for sensors and devices

Ihre App kann über eine Hintergrundaufgabe mit der DeviceUseTrigger-Klasse auf Sensoren und Peripheriegeräte zugreifen.Your app can access sensors and peripheral devices from a background task with the DeviceUseTrigger class. Dieser Auslöser ist für zeitaufwändige Vorgänge wie Datensynchronisierung oder Überwachung geeignet.You can use this trigger for long-running operations such as data synchronization or monitoring. Im Gegensatz zu Aufgaben für Systemereignisse kann eine DeviceUseTrigger-Aufgabe nur ausgelöst werden, wenn Ihre App im Vordergrund ausgeführt wird, und es können keine Bedingungen festgelegt werden.Unlike tasks for system events, a DeviceUseTrigger task can only be triggered while your app is running in the foreground and no conditions can be set on it.

Wichtig

DeviceUseTrigger und DeviceServicingTrigger können nicht für prozessinterne Hintergrundaufgaben verwendet werden.The DeviceUseTrigger and DeviceServicingTrigger cannot be used with in-process background tasks.

Einige kritische Gerätevorgänge (wie etwa zeitaufwändige Firmwareupdates) können mithilfe von DeviceUseTrigger nicht durchgeführt werden.Some critical device operations, such as long running firmware updates, cannot be performed with the DeviceUseTrigger. Diese Vorgänge können nur auf dem PC und nur von einer privilegierten App durchgeführt werden, für die DeviceServicingTrigger verwendet wird.Such operations can be performed only on the PC, and only by a privileged app that uses the DeviceServicingTrigger. Eine privilegierte App ist eine App, die vom Gerätehersteller dafür autorisiert wurde, diese Vorgänge auszuführen.A privileged app is an app that the device's manufacturer has authorized to perform those operations. Mithilfe von Metadaten wird angegeben, welche App, falls zutreffend, als privilegierte App für ein Gerät festgelegt wurde.Device metadata is used to specify which app, if any, has been designated as the privileged app for a device. Weitere Informationen finden Sie unter Geräte Synchronisierung und Update für Microsoft Store Geräte-apps .For more info, see Device sync and update for Microsoft Store device apps

Verwalten von HintergrundaufgabenManaging background tasks

Hintergrundaufgaben können mit Ereignissen und lokalem Speicher Fortschritt, Beendigung und Abbruch an die App melden.Background tasks can report progress, completion, and cancellation to your app using events and local storage. Eine App kann außerdem die von einer Hintergrundaufgabe ausgelösten Ausnahmen auffangen und die Registrierung von Hintergrundaufgaben während eines App-Updates verwalten.Your app can also catch exceptions thrown by a background task, and manage background task registration during app updates. Weitere Informationen finden Sie unter:For more info see:

Behandeln einer abgebrochenen HintergrundaufgabeHandle a cancelled background task
Überwachen des Status und Abschlusses von HintergrundaufgabenMonitor background task progress and completion

Überprüfen Sie die Registrierung Ihrer Hintergrundaufgabe während des App-Starts.Check your background task registration during app launch. Stellen Sie sicher, dass die nicht gruppierten Hintergrundaufgaben ihrer app in backgroundtaskbuilder. AllTasks vorhanden sind.Ensure that your app's ungrouped background tasks are present in BackgroundTaskBuilder.AllTasks. Registrieren Sie diejenigen, die nicht vorhanden sind, erneut.Re-register the ones that are not present. Heben Sie die Registrierung aller Aufgaben auf, die nicht mehr benötigt werden.Unregister any tasks that are no longer needed. Dadurch wird sichergestellt, dass alle Registrierungen von Hintergrundaufgaben bei jedem Start der APP auf dem neuesten Stand sind.This ensures that all background tasks registrations are up-to-date every time the app is launched.

Konzeptionelle Richtlinien für Multitasking in Windows 10Conceptual guidance for multitasking in Windows 10

Ratschläge für zugehörige HintergrundaufgabenRelated background task guidance