Erstellen einer Gerätehintergrundaufgabe in Windows 8.1 (UWP-Geräte-Apps)
In Windows 8.1 kann Ihre UWP-App Daten auf Ihrem Peripheriegerät synchronisieren. Wenn Ihre App Gerätemetadaten zugeordnet ist, kann diese UWP-Geräte-App auch Geräteupdates ausführen, z. B. Firmwareupdates. In diesem Thema wird beschrieben, wie Sie eine Gerätehintergrundaufgabe erstellen, die DeviceUseTrigger oder DeviceServicingTrigger verwendet. Gerätehintergrundagenten, die diese Auslöser verwenden, unterliegen Richtlinien, die die Zustimmung des Benutzers sicherstellen und dazu beitragen, die Akkulaufzeit zu verlängern, während Geräte synchronisiert und aktualisiert werden. Weitere Informationen zu Hintergrundaufgaben für Geräte finden Sie unter Gerätesynchronisierung und -update für UWP-Geräte-Apps.
Hinweis
Dieses Thema entspricht dem Beispiel für ein benutzerdefiniertes USB-Gerät. Das Beispiel für ein benutzerdefiniertes USB-Gerät zeigt eine Hintergrundaufgabe, die eine Gerätesynchronisierung mit DeviceUseTrigger durchführt.
Obwohl die Gerätehintergrundaufgabe im Beispiel für ein benutzerdefiniertes USB-Gerät über einen DeviceUseTrigger verfügt, kann alles, was in diesem Thema besprochen wird, auch auf Gerätehintergrundaufgaben angewendet werden, die DeviceServicingTrigger verwenden. Der einzige Unterschied zwischen der Verwendung der beiden Auslöser sind die Richtlinienüberprüfungen von Windows.
Das App-Manifest
Um eine Geräte-Hintergrundaufgabe zu verwenden, muss Ihre App sie in der App-Manifestdatei Ihrer Vordergrund-App deklarieren, wie dies auch für vom System ausgelöste Hintergrundaufgaben der Fall ist. Weitere Informationen finden Sie unter Gerätesynchronisierung und -update für UWP-Geräte-Apps.
In diesem Beispiel aus einer App-Paketmanifestdatei ist DeviceLibrary.SyncContent ein Einstiegspunkt aus der Vordergrund-App. DeviceLibrary.SyncContent ist der Einstiegspunkt für die Hintergrundaufgabe, die DeviceServicingTriggerverwendet.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
</Extensions>
Die Hintergrundaufgabe des Geräts
Die Gerätehintergrundaufgabenklasse implementiert die IBackgroundTask
Schnittstelle und enthält den tatsächlichen Code, den Sie zum Synchronisieren oder Aktualisieren Ihres Peripheriegeräts erstellen. Die Hintergrundaufgabenklasse wird ausgeführt, wenn die Hintergrundaufgabe ausgelöst wird und vom Einstiegspunkt im App-Manifest bereitgestellt wird.
Die Gerätehintergrundklasse im Beispiel für ein benutzerdefiniertes USB-Gerät enthält den Code zum Durchführen einer Synchronisierung mit einem USB-Gerät mithilfe der Hintergrundaufgabe DeviceUseTrigger. Laden Sie das Beispiel herunter, um vollständige Details zu erhalten. Weitere Informationen zur Implementierung von IBackgroundTask
und der Hintergrundaufgabeninfrastruktur von Windows finden Sie unter Unterstützen Ihrer App mit Hintergrundaufgaben.
Wichtige Teile der Hintergrundaufgabe des Geräts im Beispiel für ein benutzerdefiniertes USB-Gerät umfassen:
Die
IoSyncBackgroundTask
Klasse implementiert dieIBackgroundTask
Schnittstelle, die von der Windows-Hintergrundaufgabeninfrastruktur benötigt wird.Die
IoSyncBackgroundTask
Klasse ruft die Instanz ab, dieDeviceUseDetails
an die Klasse in der Run-Methode derIoSyncBackgroundTask
Klasse übergeben wird, und verwendet diese Instanz, um den Fortschritt zurück an die Microsoft Store-App zu melden und um Abbruchereignisse zu registrieren.Die Run-Methode der Klasse
IoSyncBackgroundTask
ruft auch die privaten MethodenOpenDevice
undWriteToDeviceAsync
auf, die den Gerätesynchronisierungscode im Hintergrund implementieren.
Die Vordergrund-App
Die Vordergrund-App im Beispiel für benutzerdefinierte USB-Geräte registriert und löst eine Gerätehintergrundaufgabe aus, die DeviceUseTrigger verwendet. Dieser Abschnitt bietet einen Überblick über die Schritte, die Ihre Vordergrund-App ausführt, um den Fortschritt einer Geräte-Hintergrundaufgabe zu registrieren, auszulösen und zu verarbeiten.
Die Vordergrund-App im Beispiel für ein benutzerdefiniertes USB-Gerät führt die folgenden Schritte aus, um eine Hintergrundaufgabe für Geräte zu verwenden:
Erstellt neue DeviceUseTrigger und
BackgroundTaskRegistration
-Objekte.Überprüft, ob Hintergrundaufgaben zuvor von dieser App registriert wurden, und bricht sie ab, indem die BackgroundTaskRegistration.Unregister-Methode für die Aufgabe aufgerufen wird.
Die private
SetupBackgroundTask
Methode registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird. DieSetupBackgroundTask
Methode wird aus derSyncWithDeviceAsync
Methode im nächsten Schritt aufgerufen.Initialisiert
DeviceUseTrigger
und speichert sie für die spätere Verwendung.Erstellt ein neues
BackgroundTaskBuilder
Objekt und verwendet seineName
TaskEntryPoint
Eigenschaften undSetTrigger
Methoden, um das Objekt und den Hintergrundaufgabennamen der AppDeviceUseTrigger
zu registrieren. Die Eigenschaft desBackgroundTaskBuilder
-ObjektsTaskEntryPoint
wird auf den vollständigen Namen der Hintergrundaufgabenklasse festgelegt, die ausgeführt wird, wenn die Hintergrundaufgabe ausgelöst wird.Registriert für Abschluss- und Statusereignisse aus der Hintergrundaufgabe, damit die Vordergrund-App abschluss- und Fortschrittsaktualisierungen für den Benutzer bereitstellen kann.
Die private
SyncWithDeviceAsync
Methode registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird, und startet die Hintergrundsynchronisierung.Ruft die
SetupBackgroundTask
Methode aus dem vorherigen Schritt auf und registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird.Ruft die private
StartSyncBackgroundTaskAsync
Methode auf, die die Hintergrundaufgabe startet. Diese Methode schließt das Handle der App auf dem Gerät, um sicherzustellen, dass die Hintergrundaufgabe das Gerät beim Start öffnen kann.Wichtig
Die Hintergrundaufgabe muss das Gerät öffnen, um das Update auszuführen, damit die Vordergrund-App ihre Verbindungen mit dem Gerät schließen muss, bevor
RequestAsync
aufgerufen wird.
Als nächstes ruft die Methode
StartSyncBackgroundTaskAsync
die MethodeDeviceUseTrigger
des ObjektsRequestAsync
auf, die die Hintergrundaufgabe startet, auslöst und das ObjektDeviceTriggerResults
vonRequestAsync
zurückgibt, mit dem ermittelt wird, ob die Hintergrundaufgabe erfolgreich gestartet wurde.Wichtig
Windows überprüft, ob alle erforderlichen Richtlinienprüfungen für die Aufgabeninitiierung abgeschlossen wurden. Wenn alle Richtlinienüberprüfungen abgeschlossen sind, wird der Aktualisierungsvorgang jetzt als Hintergrundaufgabe außerhalb der Vordergrund-App ausgeführt, sodass die App sicher angehalten werden kann, während der Vorgang ausgeführt wird. Windows erzwingt auch alle Laufzeitanforderungen und bricht die Hintergrundaufgabe ab, wenn diese Anforderungen nicht mehr erfüllt sind.
Schließlich verwendet die
SyncWithDeviceAsync
Methode dasDeviceTriggerResults
Objekt, das vonStartSyncBackgroundTaskAsync
zurückgegeben wurde, um festzustellen, ob die Hintergrundaufgabe erfolgreich gestartet wurde. Eine Switch-Anweisung wird verwendet, um das Ergebnis vonDeviceTriggerResults
zu prüfenDie Vordergrund-App implementiert einen privaten
OnSyncWithDeviceProgress
Ereignishandler, der die App-UI mit dem Fortschritt der Hintergrundaufgabe des Geräts aktualisiert.Die Vordergrund-App implementiert einen privaten
OnSyncWithDeviceCompleted
Ereignishandler, um den Übergang von Hintergrundaufgaben zur Vordergrund-App zu behandeln, wenn die Hintergrundaufgabe abgeschlossen wurde.Bestimmt mithilfe der
CheckResults
Methode desBackgroundTaskCompletedEventArgs
Objekts, ob Ausnahmen von der Hintergrundaufgabe ausgelöst wurden.Die Vordergrund-App öffnet das Gerät für die Verwendung durch die App neu, nachdem die Hintergrundaufgabe abgeschlossen ist, und aktualisiert die Benutzeroberfläche, um den Benutzer zu benachrichtigen.
Die Vordergrund-App implementiert einen Ereignishandler für das Klicken auf private Schaltflächen aus der Benutzeroberfläche, um die Hintergrundaufgabe zu starten und abzubrechen.
Der private
Sync_Click
Ereignishandler ruft dieSyncWithDeviceAsync
Methode auf, die in den vorherigen Schritten beschrieben wurde.Der private
CancelSync_Click
Ereignishandler ruft die privateCancelSyncWithDevice
Methode auf, um die Hintergrundaufgabe abzubrechen.
Die private
CancelSyncWithDevice
Methode hebt die Registrierung auf und bricht alle aktiven Gerätesynchronisierungen ab, sodass das Gerät mithilfe der BackgroundTaskRegistration.Unregister-Methode erneut geöffnet werden kann.
Zugehörige Themen
Beispiel für ein benutzerdefiniertes USB-Gerät
Gerätesynchronisierung und -update für UWP-Geräte-Apps