Répondre aux événements système avec des tâches en arrière-plan
API importantes
Découvrez comment créer une tâche en arrière-plan qui répond aux événements SystemTrigger.
Cette rubrique suppose que vous disposez d’une classe de tâches en arrière-plan écrite pour votre application et que cette tâche doit s’exécuter en réponse à un événement déclenché par le système, par exemple lorsque la disponibilité Internet change ou que l’utilisateur se connecte. Cette rubrique se concentre sur la classe SystemTrigger. Pour plus d’informations sur l’écriture d’une classe de tâche en arrière-plan, consultez Créer et inscrire une tâche en arrière-plan in-process ou Créer et inscrire une tâche en arrière-plan hors processus.
Créer un objet SystemTrigger
Dans le code de votre application, créez un objet SystemTrigger. Le premier paramètre, triggerType, spécifie le type de déclencheur d’événement système qui active cette tâche en arrière-plan. Pour obtenir la liste des types d’événements, consultez SystemTriggerType.
Le deuxième paramètre, OneShot, spécifie si la tâche en arrière-plan ne s’exécute qu’une fois la prochaine fois que l’événement système se produit ou chaque fois que l’événement système se produit jusqu’à ce que la tâche ne soit pas inscrite.
Le code suivant spécifie que la tâche en arrière-plan s’exécute chaque fois qu’Internet devient disponible :
SystemTrigger internetTrigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
Windows::ApplicationModel::Background::SystemTrigger internetTrigger{
Windows::ApplicationModel::Background::SystemTriggerType::InternetAvailable, false};
SystemTrigger ^ internetTrigger = ref new SystemTrigger(SystemTriggerType::InternetAvailable, false);
Inscrire la tâche en arrière-plan
Inscrivez la tâche en arrière-plan en appelant votre fonction d’inscription de tâche en arrière-plan. Pour plus d’informations sur l’inscription des tâches en arrière-plan, consultez Inscrire une tâche en arrière-plan.
Le code suivant inscrit la tâche en arrière-plan pour un processus en arrière-plan qui s’exécute hors processus. Si vous appeliez une tâche en arrière-plan qui s’exécute dans le même processus que l’application hôte, vous ne définissez entrypoint
pas :
string entryPoint = "Tasks.ExampleBackgroundTaskClass"; // Namespace name, '.', and the name of the class containing the background task
string taskName = "Internet-based background task";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" }; // don't set for in-process background tasks.
std::wstring taskName{ L"Internet-based background task" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass"; // don't set for in-process background tasks
String ^ taskName = "Internet-based background task";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
Remarque
les applications plateforme Windows universelle doivent appeler RequestAccessAsync avant d’inscrire l’un des types de déclencheurs en arrière-plan.
Pour vous assurer que votre application Windows universelle continue de s’exécuter correctement après avoir publié une mise à jour, vous devez appeler RemoveAccess, puis appeler RequestAccessAsync lorsque votre application démarre après avoir été mise à jour. Pour plus d’informations, consultez Instructions pour les tâches en arrière-plan.
Remarque
Les paramètres d’inscription des tâches en arrière-plan sont validés au moment de l’inscription. Une erreur est retournée si l’un des paramètres d’inscription n’est pas valide. Assurez-vous que votre application gère correctement les scénarios où l’inscription des tâches en arrière-plan échoue. Si votre application dépend plutôt d’avoir un objet d’inscription valide après avoir tenté d’inscrire une tâche, il peut se bloquer.
Notes
Pour afficher l’inscription des tâches en arrière-plan en action, téléchargez l’exemple de tâche en arrière-plan.
Les tâches en arrière-plan peuvent s’exécuter en réponse aux événements SystemTrigger et MaintenanceTrigger, mais vous devez toujours déclarer des tâches en arrière-plan dans le manifeste de l’application. Vous devez également appeler RequestAccessAsync avant d’inscrire n’importe quel type de tâche en arrière-plan.
Les applications peuvent inscrire des tâches en arrière-plan qui répondent aux événements TimeTrigger, PushNotificationTrigger et NetworkOperatorNotificationTrigger, ce qui leur permet de fournir une communication en temps réel avec l’utilisateur même si l’application n’est pas au premier plan. Pour plus d’informations, consultez Prendre en charge votre application avec des tâches en arrière-plan.
Rubriques connexes
- Créer et inscrire une tâche en arrière-plan hors processus
- Créer et inscrire une tâche en arrière-plan in-process
- Déclarer des tâches en arrière-plan dans le manifeste de l’application
- Gérer une tâche en arrière-plan annulée
- Surveiller la progression et l’achèvement des tâches en arrière-plan
- Inscrire une tâche en arrière-plan
- Définir des conditions pour l’exécution d’une tâche en arrière-plan
- Mettre à jour une vignette dynamique à partir d’une tâche en arrière-plan
- Utiliser un déclencheur de maintenance
- Exécuter une tâche en arrière-plan en fonction d’un minuteur
- Recommandations relatives aux tâches en arrière-plan
- Déboguer une tâche en arrière-plan
- Comment déclencher des événements d’interruption, de reprise et d’arrière-plan dans des applications UWP (lors du débogage)