Création d’une tâche d’arrière-plan pour appareil sous Windows 8.1 (applications UWP pour périphériques)

Dans Windows 8.1, votre application UWP peut synchroniser des données sur votre périphérique. Si votre application est associée à des métadonnées de périphérique, cette application UWP pour périphérique peut également effectuer des mises à jour de périphérique, telles que des mises à jour de micrologiciel. Cette rubrique décrit comment créer une tâche d’arrière-plan pour périphérique qui utilise les DeviceUseTrigger ou DeviceServicingTrigger. Les agents d’arrière-plan pour périphériques utilisant ces déclencheurs sont soumis à des politiques qui garantissent le consentement de l’utilisateur et contribuent à préserver la durée de vie de la batterie pendant la synchronisation et la mise à jour des périphériques. Pour plus d’informations sur les tâches d’arrière-plan pour appareils, veuillez consulter la rubrique Synchronisation et mise à jour des périphériques pour applications UWP pour périphériques.

Remarque

Cette rubrique correspond à l’Exemple de périphérique USB personnalisé. L’exemple de périphérique USB personnalisé présente une tâche d’arrière-plan qui effectue une synchronisation de périphérique avec le DeviceUseTrigger.

Bien que la tâche d’arrière-plan pour périphérique dans l’Exemple de périphérique USB personnalisé soit dotée d’un DeviceUseTrigger, tout ce qui est discuté dans cette rubrique peut également s’appliquer aux tâches d’arrière-plan pour périphériques utilisant le DeviceServicingTrigger. La seule différence entre l’utilisation des deux déclencheurs réside dans les vérifications de politique effectuées par Windows.

Le manifeste de l’application

Pour utiliser une tâche d’arrière-plan pour périphérique, votre application doit la déclarer dans le fichier manifeste de l’application de votre application de premier plan, comme c’est le cas pour les tâches d’arrière-plan déclenchées par le système. Pour plus d’informations, veuillez consulter la section Synchronisation et mise à jour des périphériques pour les applications de périphérique UWP.

Dans cet exemple tiré d’un fichier de 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 d’arrière-plan qui utilise le 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 d’arrière-plan pour périphérique implémente l’ interface IBackgroundTask et contient le code réel que vous créez pour synchroniser ou mettre à jour votre périphérique. La classe de tâche d’arrière-plan est exécutée lorsque la tâche d’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 de périphérique d’arrière-plan dans l’Exemple de périphérique USB personnalisé contient le code pour effectuer une synchronisation avec un périphérique USB en utilisant la tâche d’arrière-plan DeviceUseTrigger. Pour plus de détails, téléchargez l’exemple. Pour plus d’informations concernant la mise en œuvre de IBackgroundTask et l’infrastructure des tâches d’arrière-plan de Windows, veuillez consulter la rubrique Prise en charge de votre application avec des tâches d’arrière-plan.

Les portions clés de la tâche d’arrière-plan pour périphérique dans l’Exemple de périphérique USB personnalisé incluent :

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

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

  3. Le IoSyncBackgroundTask de la classe appelle également les méthodes privées OpenDevice et WriteToDeviceAsync qui implémentent le code de synchronisation de périphérique en arrière-plan.

L’application de premier plan

L’application de premier plan dans l’exemple de périphérique USB personnalisé enregistre et déclenche une tâche d’arrière-plan pour périphérique utilisant DeviceUseTrigger. Cette section fournit un aperçu des étapes que votre application de premier plan prendra pour enregistrer, déclencher et gérer la progression d’une tâche d’arrière-plan pour périphérique.

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

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

  2. Vérifie si des tâches d’arrière-plan ont été précédemment enregistrées 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 synchronisera avec le périphérique. La méthode SetupBackgroundTask est appelée à partir de la méthode SyncWithDeviceAsync dans l’étape suivante.

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

    2. Crée un nouvel objet BackgroundTaskBuilder et utilise ses propriétés et méthodes Name, TaskEntryPoint et SetTrigger pour enregistrer l’objet DeviceUseTrigger de l’application et le nom de la tâche d’arrière-plan. La propriété TaskEntryPoint de l’objet BackgroundTaskBuilder est définie sur le nom complet de la classe de tâche d’arrière-plan qui sera exécutée lorsque la tâche d’arrière-plan sera 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 enregistre la tâche d’arrière-plan qui synchronisera avec le périphérique et lance la synchronisation en arrière-plan.

    1. Appelle la méthode SetupBackgroundTask à partir de l’étape précédente et enregistre la tâche d’arrière-plan qui synchronisera avec le périphérique.

    2. Appelle la méthode privée StartSyncBackgroundTaskAsync qui lance la tâche d’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.

      Important

      La tâche d’arrière-plan devra ouvrir le périphérique pour effectuer la mise à jour, donc l’application de premier plan doit fermer ses connexions avec le périphérique avant d’appeler RequestAsync.

    Ensuite, la méthode StartSyncBackgroundTaskAsync appelle la méthode DeviceUseTrigger de l’objet RequestAsync qui déclenche la tâche d’arrière-plan et renvoie l’objet DeviceTriggerResults de RequestAsync utilisé pour déterminer si la tâche d’arrière-plan a démarré avec succès.

    Important

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

  5. Enfin, la méthode SyncWithDeviceAsync utilise l’objet DeviceTriggerResults renvoyé par StartSyncBackgroundTaskAsync pour déterminer si la tâche d’arrière-plan a démarré avec succès. Une instruction switch est utilisée pour inspecter le résultat de DeviceTriggerResults

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

  7. L’application de premier plan implémente un gestionnaire d’événements privé OnSyncWithDeviceCompleted pour gérer la transition des tâches d’arrière-plan vers l’application de premier plan lorsque la tâche d’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 le périphérique pour une utilisation par l’application maintenant que la tâche d’arrière-plan est terminée et met à jour l’interface utilisateur pour notifier 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é Sync_Click appelle la méthode SyncWithDeviceAsync décrite dans les étapes précédentes.

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

  9. La méthode privée CancelSyncWithDevice désenregistre et annule toutes les synchronisations de périphériques actives afin que le périphérique puisse être rouvert en utilisant la méthode BackgroundTaskRegistration.Unregister.

Exemple d’appareil USB personnalisé

Synchronisation et mise à jour des périphériques pour les applications de périphérique UWP

Launching, resuming, and multitasking

Prise en charge de votre application avec des tâches en arrière-plan