Partager via


Utiliser un déclencheur de maintenance

API importantes

Découvrez comment utiliser la classe MaintenanceTrigger pour exécuter du code léger en arrière-plan tandis que l’appareil est branché.

Créer un objet de déclencheur de maintenance

Cet exemple suppose que vous disposez d’un code léger que vous pouvez exécuter en arrière-plan pour améliorer votre application pendant que l’appareil est branché. Cette rubrique se concentre sur MaintenanceTrigger, qui est similaire à 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éez un objet MaintenanceTrigger. Le deuxième paramètre, OneShot, spécifie si la tâche de maintenance ne s’exécute qu’une seule fois ou continue à s’exécuter régulièrement. Si OneShot a la valeur true, le premier paramètre (FreshnessTime) spécifie le nombre de minutes à attendre avant de planifier la tâche en arrière-plan. Si OneShot est défini sur false, FreshnessTime spécifie la fréquence à laquelle la tâche en arrière-plan s’exécute.

Remarque

Si FreshnessTime est défini sur moins de 15 minutes, une exception est levée lors de la tentative d’inscription de la tâche en arrière-plan.

Cet exemple de code crée un déclencheur qui s’exécute une fois par heure.

uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);

(Facultatif) Ajouter une condition

Dans cet exemple, la condition est définie sur InternetAvailable afin que la maintenance s’exécute quand Internet est disponible (ou lorsqu’elle devient disponible). Pour obtenir la liste des conditions de tâche en arrière-plan possibles, consultez SystemConditionType.

Le code suivant ajoute une condition au générateur de tâches de maintenance :

SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
    Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);

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 de maintenance. Notez qu’elle suppose que votre tâche en arrière-plan s’exécute dans un processus distinct de votre application, car elle spécifie entryPoint. Si votre tâche en arrière-plan s’exécute dans le même processus que votre application, vous ne spécifiez entryPointpas .

string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName   = "Maintenance background task example";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName   = "Maintenance background task example";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);

Remarque

Pour toutes les familles d’appareils, à l’exception du bureau, si l’appareil devient faible en mémoire, les tâches en arrière-plan peuvent être arrêtées. Si une exception hors mémoire n’est pas exposée ou si l’application ne la gère pas, la tâche en arrière-plan est arrêtée sans avertissement et sans déclencher l’événement OnCanceled. Cela permet de garantir l’expérience utilisateur de l’application au premier plan. Votre tâche en arrière-plan doit être conçue pour gérer ce scénario.

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 de votre application, 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.