Partager via


Création d’une tâche en arrière-plan d’appareil dans Windows 8.1 (applications d’appareil UWP)

Importante

Les métadonnées de l’appareil sont dépréciées et seront supprimées dans une version ultérieure de Windows. Pour plus d’informations sur le remplacement de cette fonctionnalité, consultez Métadonnées du conteneur de package de pilotes.

Votre application UWP peut synchroniser des données sur votre appareil périphérique. Si votre application est associée aux métadonnées de l’appareil, cette application d’appareil UWP peut également effectuer des mises à jour d’appareil, telles que les mises à jour du microprogramme. Cet article explique comment créer une tâche en arrière-plan d’appareil qui utilise DeviceUseTrigger ou DeviceServicingTrigger. Les agents d’arrière-plan d’appareil qui utilisent ces déclencheurs sont soumis à des stratégies qui garantissent le consentement de l’utilisateur et aident à préserver la durée de vie de la batterie pendant que les appareils sont synchronisés et mis à jour. Pour plus d’informations sur les tâches en arrière-plan de l’appareil, consultez Synchronisation et mise à jour des appareils UWP.

Cet article correspond à l’exemple d’appareil USB personnalisé. L’exemple d’appareil USB personnalisé illustre une tâche en arrière-plan qui effectue la synchronisation de l’appareil avec DeviceUseTrigger.

Bien que la tâche d'arrière-plan de l'appareil dans l'exemple de périphérique USB personnalisé dispose d'un DeviceUseTrigger, tout ce qui est abordé dans cet article peut également être appliqué aux tâches d'arrière-plan qui utilisent un DeviceServicingTrigger. La seule différence entre l’utilisation des deux déclencheurs est la vérification de stratégie effectuée par Windows.

Manifeste de l’application

Pour utiliser une tâche en arrière-plan d’appareil, votre application doit la déclarer dans le fichier manifeste d’application de votre application de premier plan, comme pour les tâches en arrière-plan déclenchées par le système. Pour plus d’informations, consultez Synchronisation et mise à jour des appareils UWP.

Dans cet exemple tiré d’un fichier manifeste de package d’application, DeviceLibrary.SyncContent est un point d’entrée de l’application de premier plan. DeviceLibrary.SyncContent est le point d’entrée de la tâche en arrière-plan qui utilise DeviceUseTrigger.

<Extensions>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
    <BackgroundTasks>
      <m2:Task Type="deviceUse" /> 
    </BackgroundTasks>
  </Extension>
</Extensions>

La tâche d’arrière-plan pour périphérique

La classe de tâche en arrière-plan de l’appareil implémente l’interface IBackgroundTask et contient le code réel que vous créez pour synchroniser ou mettre à jour votre appareil périphérique. La classe de tâche en arrière-plan est exécutée lorsque la tâche en arrière-plan est déclenchée et à partir du point d’entrée fourni dans le manifeste d’application de votre application.

La classe d’arrière-plan d’appareil dans l’exemple d’appareil USB personnalisé contient le code permettant d’effectuer une synchronisation avec un périphérique USB à l’aide de la tâche en arrière-plan DeviceUseTrigger . Pour plus d’informations, téléchargez l’exemple. Pour plus d’informations sur l’implémentation IBackgroundTask et l’infrastructure des tâches en arrière-plan de Windows, consultez Prise en charge de votre application avec des tâches en arrière-plan.

Les parties clés de la tâche en arrière-plan de l’appareil dans l’exemple d’appareil USB personnalisé sont les suivantes :

  1. La IoSyncBackgroundTask classe implémente l’interface IBackgroundTask requise par l’infrastructure de tâche en arrière-plan Windows.

  2. La classe IoSyncBackgroundTask obtient l’instance DeviceUseDetails passée à la classe dans la IoSyncBackgroundTask de la classe et utilise cette instance pour rapporter la progression à l’application Microsoft Store et pour s’inscrire aux événements d’annulation.

  3. La méthode Run de la IoSyncBackgroundTask classe appelle également les méthodes privées OpenDevice et WriteToDeviceAsync qui implémentent le code de synchronisation d’appareil en arrière-plan.

L’application de premier plan

L’application de premier plan dans l’exemple d’appareil USB personnalisé inscrit et déclenche une tâche en arrière-plan d’appareil qui utilise DeviceUseTrigger. Cette section fournit une vue d’ensemble des étapes que votre application de premier plan prendra pour inscrire, déclencher et gérer la progression d’une tâche en arrière-plan de l’appareil.

L’application de premier plan dans l’exemple d’appareil USB personnalisé effectue les étapes suivantes pour utiliser une tâche en arrière-plan d’appareil :

  1. Crée de nouveaux objets DeviceUseTrigger et BackgroundTaskRegistration.

  2. Vérifie si des tâches en arrière-plan ont été précédemment inscrites par cette application et les annule en appelant la méthode BackgroundTaskRegistration.Unregister sur la tâche.

  3. La méthode privée SetupBackgroundTask enregistre la tâche d'arrière-plan qui se synchronise avec l’appareil. La SetupBackgroundTask méthode est appelée à partir de la SyncWithDeviceAsync méthode à l’étape suivante.

    1. Initialise le DeviceUseTrigger et l’enregistre pour une utilisation ultérieure.

    2. Crée un objet BackgroundTaskBuilder et utilise ses propriétés Name, TaskEntryPoint et sa méthode SetTrigger pour enregistrer l'objet DeviceUseTrigger et le nom de la tâche d'arrière-plan de l'application. La BackgroundTaskBuilder propriété de l’objet TaskEntryPoint est définie sur le nom complet de la classe de tâches en arrière-plan qui sera exécutée lorsque la tâche en arrière-plan est déclenchée.

    3. S’inscrit aux événements d’achèvement et de progression à partir de la tâche en arrière-plan afin que l’application de premier plan puisse fournir des mises à jour d’achèvement et de progression à l’utilisateur.

  4. La méthode privée SyncWithDeviceAsync inscrit la tâche en arrière-plan qui se synchronise avec l’appareil et démarre la synchronisation en arrière-plan.

    1. Appelle la SetupBackgroundTask méthode de l’étape précédente et enregistre le processus d'arrière-plan pour synchroniser avec l'appareil.

    2. Appelle la méthode privée StartSyncBackgroundTaskAsync qui démarre la tâche en arrière-plan. Cette méthode ferme la poignée de l’application au périphérique pour garantir que la tâche d’arrière-plan est en mesure d’ouvrir le périphérique lorsqu’elle démarre.

      Importante

      La tâche en arrière-plan doit ouvrir l’appareil pour effectuer la mise à jour afin que l’application de premier plan doit fermer ses connexions à l’appareil avant d’appeler RequestAsync.

    Ensuite, la méthode StartSyncBackgroundTaskAsync appelle la méthode RequestAsync de l'objet DeviceUseTrigger, laquelle démarre et déclenche la tâche en arrière-plan, et retourne l'objet DeviceTriggerResults à partir de RequestAsync, utilisé pour déterminer si la tâche en arrière-plan a démarré et s'est déclenchée correctement.

    Importante

    Windows vérifie que toutes les vérifications de stratégie d’initiation de tâche nécessaires ont été effectuées. Si toutes les vérifications de stratégie sont terminées, l’opération de mise à jour s’exécute désormais en tant que tâche en arrière-plan en dehors de l’application de premier plan, ce qui permet à l’application d’être suspendue en toute sécurité pendant que l’opération est en cours. Windows applique également les exigences d’exécution et annule la tâche en arrière-plan si ces exigences ne sont plus remplies.

  5. Enfin, la méthode SyncWithDeviceAsync utilise l’objet DeviceTriggerResults retourné par StartSyncBackgroundTaskAsync pour déterminer si la tâche de fond a démarré correctement. Une instruction switch est utilisée pour inspecter le résultat à partir de DeviceTriggerResults

  6. L’application de premier plan implémente un gestionnaire d’événements privé OnSyncWithDeviceProgress qui met à jour l’interface utilisateur de l’application avec la progression de la tâche en arrière-plan de l’appareil.

  7. L’application de premier plan implémente un gestionnaire d’événements privé OnSyncWithDeviceCompleted pour gérer la transition des tâches en arrière-plan à l’application de premier plan lorsque la tâche en arrière-plan est terminée.

    1. Utilise la méthode CheckResults de l’objet BackgroundTaskCompletedEventArgs pour déterminer si des exceptions ont été levées par la tâche d’arrière-plan.

    2. L’application de premier plan rouvre l’appareil à utiliser par l’application maintenant que la tâche en arrière-plan est terminée et met à jour l’interface utilisateur pour avertir l’utilisateur.

  8. L’application de premier plan implémente des gestionnaires d’événements de clic de bouton privés de l’interface utilisateur pour démarrer et annuler la tâche d’arrière-plan.

    1. Le gestionnaire d’événements privés Sync_Click appelle la SyncWithDeviceAsync méthode décrite dans les étapes précédentes.

    2. Le gestionnaire d’événements privés CancelSync_Click appelle la méthode privée CancelSyncWithDevice pour annuler la tâche en arrière-plan.

  9. La méthode privée CancelSyncWithDevice annule l’inscription et annule les synchronisations d’appareils actifs afin que l’appareil puisse être rouvert à l’aide de la méthode BackgroundTaskRegistration.Unregister .