Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Geräte-Metadaten sind veraltet und werden in einer zukünftigen Version von Windows entfernt. Informationen zum Ersatz dieser Funktionalität finden Sie unter Treiberpaketcontainermetadaten.
Ihre UWP-App kann 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 Artikel wird beschrieben, wie Sie eine Gerätehintergrundaufgabe erstellen, die deviceUseTrigger oder DeviceServicingTrigger verwendet. Gerätehintergrund-Agents, die diese Trigger verwenden, unterliegen Richtlinien, die sicherstellen, dass die Benutzerzustimmung vorliegt und die Akkulaufzeit geschont wird, 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.
Dieser Artikel entspricht dem Beispiel für ein benutzerdefiniertes USB-Gerät. Das Beispiel für ein benutzerdefiniertes USB-Gerät veranschaulicht eine Hintergrundaufgabe, die die Gerätesynchronisierung mit deviceUseTrigger durchführt.
Obwohl die Hintergrundaufgabe des Geräts im Beispiel für benutzerdefinierte USB-Geräte einen DeviceUseTrigger enthält, können alle in diesem Artikel behandelten Elemente 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ätehintergrundaufgabe zu verwenden, muss Ihre App sie in der App-Manifestdatei Ihrer Vordergrund-App deklarieren, wie es für vom System ausgelöste Hintergrundaufgaben gemacht wird. 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 Eingabepunkt aus der Hauptanwendung. DeviceLibrary.SyncContent ist der Einstiegspunkt für die Hintergrundaufgabe, die DeviceUseTrigger verwendet.
<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 im App-Manifest angegebenen Einstiegspunkt.
Die Gerätehintergrundklasse im Beispiel für ein benutzerdefiniertes USB-Gerät enthält den Code zum Ausführen einer Synchronisierung mit einem USB-Gerät mithilfe der DeviceUseTrigger-Hintergrundaufgabe . Laden Sie das Beispiel herunter, um vollständige Details zu erhalten. Weitere Informationen zur Implementierung 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
IoSyncBackgroundTaskKlasse implementiert dieIBackgroundTaskschnittstelle, die von der Windows-Hintergrundaufgabeninfrastruktur benötigt wird.Die
IoSyncBackgroundTaskKlasse erhält dieDeviceUseDetailsInstanz, die in der Ausführung der Klasse an dieIoSyncBackgroundTaskKlasse übergeben wird, und verwendet diese Instanz, um den Fortschritt an die Microsoft Store-App zurückzumelden und sich für Abbruchereignisse zuDie
IoSyncBackgroundTaskRun-Methode der Klasse ruft auch die privatenOpenDeviceundWriteToDeviceAsyncMethoden auf, die den Synchronisierungscode des Hintergrundgeräts 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 durchläuft die folgenden Schritte, um eine gerätespezifische Hintergrundaufgabe auszuführen:
Erstellt neue DeviceUseTrigger und
BackgroundTaskRegistrationObjekte.Ü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
SetupBackgroundTaskMethode registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird. DieSetupBackgroundTaskMethode wird aus derSyncWithDeviceAsyncMethode im nächsten Schritt aufgerufen.Initialisiert
DeviceUseTriggerund speichert es für die spätere Verwendung.Erstellt ein neues
BackgroundTaskBuilderObjekt und verwendet seineNameTaskEntryPointEigenschaften undSetTriggerMethoden, um das Objekt und den Hintergrundaufgabennamen der AppDeviceUseTriggerzu registrieren. DieBackgroundTaskBuilderEigenschaft desTaskEntryPointObjekts 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
SyncWithDeviceAsyncMethode registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird, und startet die Hintergrundsynchronisierung.Ruft die
SetupBackgroundTaskMethode aus dem vorherigen Schritt auf und registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird.Ruft die private
StartSyncBackgroundTaskAsyncMethode auf, die die Hintergrundaufgabe startet. Diese Methode schließt den Zugriff der App auf das Gerät, um sicherzustellen, dass der Hintergrundprozess das Gerät beim Start öffnen kann.Von Bedeutung
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
RequestAsyncaufgerufen wird.
Als Nächstes ruft die
StartSyncBackgroundTaskAsyncMethode desDeviceUseTriggerObjekts dieRequestAsyncMethode auf, die die Hintergrundaufgabe startet und dasDeviceTriggerResultsObjekt vonRequestAsynczurückgibt, das verwendet wird, um festzustellen, ob die Hintergrundaufgabe erfolgreich gestartet wurde.Von Bedeutung
Windows überprüft, ob alle erforderlichen Überprüfungen der Aufgabeninitiierungsrichtlinien 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
SyncWithDeviceAsyncMethode das zurückgegebeneStartSyncBackgroundTaskAsyncObjekt vonDeviceTriggerResults, um festzustellen, ob die Hintergrundaufgabe erfolgreich gestartet ist. Verwenden Sie ein Switch-Statement, um das Ergebnis vonDeviceTriggerResultszu prüfen.Die Vordergrund-App implementiert einen privaten
OnSyncWithDeviceProgressEreignishandler, der die App-UI mit dem Fortschritt der Hintergrundaufgabe des Geräts aktualisiert.Die Vordergrund-App implementiert einen privaten
OnSyncWithDeviceCompletedEreignishandler, um den Übergang von der im Hintergrund laufenden Aufgabe zur Vordergrund-App zu steuern, wenn die Hintergrundaufgabe abgeschlossen ist.Verwendet die
CheckResultsMethode desBackgroundTaskCompletedEventArgsObjekts, um festzustellen, ob von der Hintergrundaufgabe Ausnahmen 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_ClickEreignishandler ruft dieSyncWithDeviceAsyncin den vorherigen Schritten beschriebene Methode auf.Der private
CancelSync_ClickEreignishandler ruft die privateCancelSyncWithDeviceMethode auf, um die Hintergrundaufgabe abzubrechen.
Die private
CancelSyncWithDeviceMethode 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.