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 :
La classe
IoSyncBackgroundTask
implémente l’interfaceIBackgroundTask
requise par l’infrastructure de tâches d’arrière-plan de Windows.La
IoSyncBackgroundTask
classe obtient l’instanceDeviceUseDetails
passée à la classe dans la méthode Run de laIoSyncBackgroundTask
classe et utilise cette instance pour signaler la progression à l’application Microsoft Store et s’inscrire aux événements d’annulation.Le
IoSyncBackgroundTask
de la classe appelle également les méthodes privéesOpenDevice
etWriteToDeviceAsync
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 :
Crée de nouveaux objets DeviceUseTrigger et
BackgroundTaskRegistration
.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.
La méthode privée
SetupBackgroundTask
enregistre la tâche d’arrière-plan qui synchronisera avec le périphérique. La méthodeSetupBackgroundTask
est appelée à partir de la méthodeSyncWithDeviceAsync
dans l’étape suivante.Initialise l’objet
DeviceUseTrigger
et le sauvegarde pour une utilisation ultérieure.Crée un nouvel objet
BackgroundTaskBuilder
et utilise ses propriétés et méthodesName
,TaskEntryPoint
etSetTrigger
pour enregistrer l’objetDeviceUseTrigger
de l’application et le nom de la tâche d’arrière-plan. La propriétéTaskEntryPoint
de l’objetBackgroundTaskBuilder
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.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.
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.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.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éthodeDeviceUseTrigger
de l’objetRequestAsync
qui déclenche la tâche d’arrière-plan et renvoie l’objetDeviceTriggerResults
deRequestAsync
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.
Enfin, la méthode
SyncWithDeviceAsync
utilise l’objetDeviceTriggerResults
renvoyé parStartSyncBackgroundTaskAsync
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 deDeviceTriggerResults
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.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.Utilise la méthode
CheckResults
de l’objetBackgroundTaskCompletedEventArgs
pour déterminer si des exceptions ont été levées par la tâche d’arrière-plan.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.
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.
Le gestionnaire d’événements privé
Sync_Click
appelle la méthodeSyncWithDeviceAsync
décrite dans les étapes précédentes.Le gestionnaire d’événements privé
CancelSync_Click
appelle la méthode privéeCancelSyncWithDevice
pour annuler la tâche d’arrière-plan.
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.
Rubriques connexes
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