Freigeben über


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:

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

  2. Die IoSyncBackgroundTask Klasse ruft die Instanz ab, die DeviceUseDetails an die Klasse in der Run-Methode der IoSyncBackgroundTask Klasse übergeben wird, und verwendet diese Instanz, um den Fortschritt zurück an die Microsoft Store-App zu melden und um Abbruchereignisse zu registrieren.

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

  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 sie 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 Eigenschaft des BackgroundTaskBuilder-Objekts TaskEntryPoint 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 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 MethodeStartSyncBackgroundTaskAsync die Methode DeviceUseTrigger des Objekts RequestAsync auf, die die Hintergrundaufgabe startet, auslöst und das Objekt DeviceTriggerResults von RequestAsync 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.

  5. Schließlich verwendet die SyncWithDeviceAsync Methode das DeviceTriggerResults Objekt, das von StartSyncBackgroundTaskAsync zurückgegeben wurde, um festzustellen, ob die Hintergrundaufgabe erfolgreich gestartet wurde. Eine Switch-Anweisung wird verwendet, 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 Hintergrundaufgaben zur Vordergrund-App zu behandeln, wenn die Hintergrundaufgabe abgeschlossen wurde.

    1. Bestimmt mithilfe der CheckResults Methode des BackgroundTaskCompletedEventArgs Objekts, ob Ausnahmen von der Hintergrundaufgabe 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 Methode auf, die in den vorherigen Schritten beschrieben wurde.

    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.

Beispiel für ein benutzerdefiniertes USB-Gerät

Gerätesynchronisierung und -update für UWP-Geräte-Apps

Launching, resuming, and multitasking

Unterstützen Ihrer App bei Hintergrundaufgaben