Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
La
IoSyncBackgroundTaskclasse implémente l’interfaceIBackgroundTaskrequise par l’infrastructure de tâche en arrière-plan Windows.La classe
IoSyncBackgroundTaskobtient l’instanceDeviceUseDetailspassée à la classe dans laIoSyncBackgroundTaskde la classe et utilise cette instance pour rapporter la progression à l’application Microsoft Store et pour s’inscrire aux événements d’annulation.La méthode Run de la
IoSyncBackgroundTaskclasse appelle également les méthodes privéesOpenDeviceetWriteToDeviceAsyncqui 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 :
Crée de nouveaux objets DeviceUseTrigger et
BackgroundTaskRegistration.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.
La méthode privée
SetupBackgroundTaskenregistre la tâche d'arrière-plan qui se synchronise avec l’appareil. LaSetupBackgroundTaskméthode est appelée à partir de laSyncWithDeviceAsyncméthode à l’étape suivante.Initialise le
DeviceUseTriggeret l’enregistre pour une utilisation ultérieure.Crée un objet
BackgroundTaskBuilderet utilise ses propriétésName,TaskEntryPointet sa méthodeSetTriggerpour enregistrer l'objetDeviceUseTriggeret le nom de la tâche d'arrière-plan de l'application. LaBackgroundTaskBuilderpropriété de l’objetTaskEntryPointest 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.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
SyncWithDeviceAsyncinscrit la tâche en arrière-plan qui se synchronise avec l’appareil et démarre la synchronisation en arrière-plan.Appelle la
SetupBackgroundTaskméthode de l’étape précédente et enregistre le processus d'arrière-plan pour synchroniser avec l'appareil.Appelle la méthode privée
StartSyncBackgroundTaskAsyncqui 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
StartSyncBackgroundTaskAsyncappelle la méthodeRequestAsyncde l'objetDeviceUseTrigger, laquelle démarre et déclenche la tâche en arrière-plan, et retourne l'objetDeviceTriggerResultsà partir deRequestAsync, 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.
Enfin, la méthode
SyncWithDeviceAsyncutilise l’objetDeviceTriggerResultsretourné parStartSyncBackgroundTaskAsyncpour déterminer si la tâche de fond a démarré correctement. Une instruction switch est utilisée pour inspecter le résultat à partir deDeviceTriggerResultsL’application de premier plan implémente un gestionnaire d’événements privé
OnSyncWithDeviceProgressqui met à jour l’interface utilisateur de l’application avec la progression de la tâche en arrière-plan de l’appareil.L’application de premier plan implémente un gestionnaire d’événements privé
OnSyncWithDeviceCompletedpour 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.Utilise la méthode
CheckResultsde l’objetBackgroundTaskCompletedEventArgspour déterminer si des exceptions ont été levées par la tâche d’arrière-plan.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.
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és
Sync_Clickappelle laSyncWithDeviceAsyncméthode décrite dans les étapes précédentes.Le gestionnaire d’événements privés
CancelSync_Clickappelle la méthode privéeCancelSyncWithDevicepour annuler la tâche en arrière-plan.
La méthode privée
CancelSyncWithDeviceannule l’inscription et annule les synchronisations d’appareils actifs afin que l’appareil puisse être rouvert à l’aide de la méthode BackgroundTaskRegistration.Unregister .