Freigeben über


Erstellen einer Gerätehintergrundaufgabe in Windows 8.1 (UWP-Geräte-Apps)

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:

  1. Die IoSyncBackgroundTask Klasse implementiert die IBackgroundTask schnittstelle, die von der Windows-Hintergrundaufgabeninfrastruktur benötigt wird.

  2. Die IoSyncBackgroundTask Klasse erhält die DeviceUseDetails Instanz, die in der Ausführung der Klasse an die IoSyncBackgroundTask Klasse übergeben wird, und verwendet diese Instanz, um den Fortschritt an die Microsoft Store-App zurückzumelden und sich für Abbruchereignisse zu

  3. Die IoSyncBackgroundTask Run-Methode der Klasse ruft auch die privaten OpenDevice und WriteToDeviceAsync Methoden 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:

  1. Erstellt neue DeviceUseTrigger und BackgroundTaskRegistration Objekte.

  2. Ü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.

  3. Die private SetupBackgroundTask Methode registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird. Die SetupBackgroundTask Methode wird aus der SyncWithDeviceAsync Methode im nächsten Schritt aufgerufen.

    1. Initialisiert DeviceUseTrigger und speichert es für die spätere Verwendung.

    2. Erstellt ein neues BackgroundTaskBuilder Objekt und verwendet seine NameTaskEntryPoint Eigenschaften und SetTrigger Methoden, um das Objekt und den Hintergrundaufgabennamen der App DeviceUseTrigger zu registrieren. Die BackgroundTaskBuilder Eigenschaft des TaskEntryPoint Objekts wird auf den vollständigen Namen der Hintergrundaufgabenklasse festgelegt, die ausgeführt wird, wenn die Hintergrundaufgabe ausgelöst wird.

    3. Registriert für Abschluss- und Statusereignisse aus der Hintergrundaufgabe, damit die Vordergrund-App abschluss- und Fortschrittsaktualisierungen für den Benutzer bereitstellen kann.

  4. Die private SyncWithDeviceAsync Methode registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird, und startet die Hintergrundsynchronisierung.

    1. Ruft die SetupBackgroundTask Methode aus dem vorherigen Schritt auf und registriert die Hintergrundaufgabe, die mit dem Gerät synchronisiert wird.

    2. Ruft die private StartSyncBackgroundTaskAsync Methode 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 RequestAsync aufgerufen wird.

    Als Nächstes ruft die StartSyncBackgroundTaskAsync Methode des DeviceUseTrigger Objekts die RequestAsync Methode auf, die die Hintergrundaufgabe startet und das DeviceTriggerResults Objekt von RequestAsync zurü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.

  5. Schließlich verwendet die SyncWithDeviceAsync Methode das zurückgegebene StartSyncBackgroundTaskAsync Objekt von DeviceTriggerResults, um festzustellen, ob die Hintergrundaufgabe erfolgreich gestartet ist. Verwenden Sie ein Switch-Statement, um das Ergebnis von DeviceTriggerResults zu prüfen.

  6. Die Vordergrund-App implementiert einen privaten OnSyncWithDeviceProgress Ereignishandler, der die App-UI mit dem Fortschritt der Hintergrundaufgabe des Geräts aktualisiert.

  7. Die Vordergrund-App implementiert einen privaten OnSyncWithDeviceCompleted Ereignishandler, um den Übergang von der im Hintergrund laufenden Aufgabe zur Vordergrund-App zu steuern, wenn die Hintergrundaufgabe abgeschlossen ist.

    1. Verwendet die CheckResults Methode des BackgroundTaskCompletedEventArgs Objekts, um festzustellen, ob von der Hintergrundaufgabe Ausnahmen ausgelöst wurden.

    2. 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.

  8. 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.

    1. Der private Sync_Click Ereignishandler ruft die SyncWithDeviceAsync in den vorherigen Schritten beschriebene Methode auf.

    2. Der private CancelSync_Click Ereignishandler ruft die private CancelSyncWithDevice Methode auf, um die Hintergrundaufgabe abzubrechen.

  9. 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.