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.
Les tâches en arrière-plan sont une méthode sur Windows 10 pour exécuter du code en arrière-plan. Ils font partie de la plateforme d’application standard et fournissent essentiellement à une application la possibilité de s’inscrire à un événement système (déclencheur) et lorsque cet événement se produit, exécutez un bloc de code prédéfini en arrière-plan. Les déclencheurs système incluent des événements tels que les modifications apportées à la connectivité réseau ou au fuseau horaire système.
Dans certaines circonstances, les déclencheurs système fournis ne suffisent pas pour répondre aux besoins des partenaires. À compter de Windows 10 version 1803, pour donner aux partenaires plus de flexibilité et permettre l’utilisation de tâches en arrière-plan pour plus de circonstances, les partenaires peuvent créer des déclencheurs personnalisés auxquels les applications peuvent s’inscrire. Les déclencheurs personnalisés sont définis dans un pilote de périphérique et peuvent être utilisés pour déclencher des événements pour toute condition matérielle souhaitée. Lorsque le déclencheur personnalisé est déclenché, votre application peut exécuter une tâche en arrière-plan de la même manière que le modèle d’application standard.
Implémentation d’un déclencheur personnalisé
Il existe deux étapes pour implémenter un déclencheur personnalisé. Plus précisément, le déclencheur doit être défini et déclenché dans un pilote de périphérique ou un service système et une application avec une tâche en arrière-plan doit être créée.
Création du déclencheur personnalisé
Un déclencheur personnalisé est défini et déclenché au sein d’un service natif ou d’un pilote de périphérique via la fonction RtlRaiseCustomSystemEventTrigger . Il peut ensuite être inscrit à partir d’une application universelle et utilisé pour lancer une tâche en arrière-plan de la même manière qu’un déclencheur défini par le système.
L’extrait de code suivant montre comment déclencher un déclencheur personnalisé.
#define GUID_MY_CUSTOMSYSTEMEVENTTRIGGERID L"{9118718B-FF80-4AFE-BAF1-D88A4525F3AB}"
CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG triggerConfig;
CUSTOM_SYSTEM_EVENT_TRIGGER_INIT(&triggerConfig,
GUID_MY_CUSTOMSYSTEMEVENTTRIGGERID);
NTSTATUS status = RtlRaiseCustomSystemEventTrigger(&triggerConfig);
Dans l'exemple de code ci-dessus, le GUID transmis en tant que paramètre à la fonction RtlRaiseCustomSystemEventTrigger définit l'identificateur du déclencheur auquel l'application s'enregistre lors de la création de la tâche d'arrière-plan. Cet identificateur doit être unique.
Création d’une tâche en arrière-plan
La création d’une tâche en arrière-plan et son inscription pour un déclencheur personnalisé est très similaire au processus utilisé pour les tâches en arrière-plan qui fonctionnent avec les déclencheurs système standard.
Commencez par créer une application UWP.
Définissez la tâche en arrière-plan dans le fichier manifeste de l’application, comme illustré dans l’exemple suivant. Notez que l’attribut Type de l’élément Task est défini sur
"systemEvent"<Applications> <Application Id="MyBackgroundTaskSample.App" Executable="$targetnametoken$.exe" EntryPoint=" MyBackgroundTaskSample.App"> <Extensions> <Extension Category="windows.backgroundTasks" EntryPoint="MyBackgroundTask.SampleBackgroundTask"> <BackgroundTasks> <Task Type="systemEvent" /> </BackgroundTasks> </Extension> </Extensions> </Application> </Applications>Inscrivez l’application pour écouter le déclencheur personnalisé que vous avez créé, comme indiqué dans l’extrait de code suivant. Notez que la chaîne utilisée lors de l’instanciation de CustomSystemEventTrigger doit correspondre au GUID utilisé lors de la création du déclencheur dans votre service natif ou pilote de périphérique.
public void InitBackgroundTask() { // Create a new background task builder. BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); // Create a new CustomSystemEvent trigger. var myTrigger = new CustomSystemEventTrigger( "{9118718B-FF80-4AFE-BAF1-D88A4525F3AB}", //Trigger Identifier CustomSystemEventTriggerRecurrence.Once); //OneShot // Associate the CustomSystemEvent trigger with the background task builder. taskBuilder.SetTrigger(myTrigger); // Specify the background task to run when the trigger fires. taskBuilder.TaskEntryPoint = MyBackgroundTask.SampleBackgroundTask; // Name the background task. taskBuilder.Name = "fabrikam.audio-jack.connected Task"; // Register the background task. BackgroundTaskRegistration taskRegistration = taskBuilder.Register(); // Associate completed event handler with the new background task. taskRegistration.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted); }Créez la tâche en arrière-plan, comme illustré dans l’extrait de code suivant.
namespace MyBackgroundTask { public sealed class SampleBackgroundTask : IBackgroundTask { // Called by the system when it's time to run our task public void Run(IBackgroundTaskInstance instance) { DoWork(); } } }
Pour obtenir des conseils supplémentaires sur la création, la configuration et l’utilisation de tâches et de déclencheurs en arrière-plan, consultez Démarrage rapide : Créer et inscrire une tâche en arrière-plan.