Partager via


Exécuter une tâche en arrière-plan lorsque votre application UWP est mise à jour

Découvrez comment écrire une tâche en arrière-plan qui s’exécute après la mise à jour de votre application store plateforme Windows universelle (UWP).

La tâche en arrière-plan de la tâche de mise à jour est appelée par le système d’exploitation une fois que l’utilisateur a installé une mise à jour sur une application installée sur l’appareil. Cela permet à votre application d’effectuer des tâches d’initialisation telles que l’initialisation d’un nouveau canal de notification Push, la mise à jour du schéma de base de données, etc. avant que l’utilisateur ne lance votre application mise à jour.

La tâche de mise à jour diffère du lancement d’une tâche en arrière-plan à l’aide du déclencheur ServicingComplete , car dans ce cas, votre application doit s’exécuter au moins une fois avant qu’elle soit mise à jour afin d’inscrire la tâche en arrière-plan qui sera activée par le déclencheur ServicingComplete . La tâche de mise à jour n’est pas inscrite et donc une application qui n’a jamais été exécutée, mais qui est mise à niveau, aura toujours sa tâche de mise à jour déclenchée.

Étape 1 : Créer la classe de tâches en arrière-plan

Comme pour d’autres types de tâches en arrière-plan, vous implémentez la tâche en arrière-plan mettre à jour la tâche en arrière-plan en tant que composant Windows Runtime. Pour créer ce composant, suivez les étapes de la section Créer la classe Tâche en arrière-plan de Create et inscrivez une tâche en arrière-plan hors processus. Procédez comme suit :

  • Ajout d’un projet de composant Windows Runtime à votre solution.
  • Création d’une référence à partir de votre application au composant.
  • Création d’une classe publique scellée dans le composant qui implémente IBackgroundTask.
  • Implémentation de la méthode Run , qui est le point d’entrée requis appelé lors de l’exécution de la tâche de mise à jour. Si vous envisagez d’effectuer des appels asynchrones à partir de votre tâche en arrière-plan, créez et inscrivez une tâche en arrière-plan hors processus explique comment utiliser un report dans votre méthode Run .

Vous n’avez pas besoin d’inscrire cette tâche en arrière-plan (la section « Inscrire la tâche en arrière-plan à exécuter » dans la rubrique Créer et inscrire une tâche en arrière-plan hors processus) pour utiliser la tâche de mise à jour. Il s’agit de la principale raison d’utiliser une tâche de mise à jour, car vous n’avez pas besoin d’ajouter de code à votre application pour inscrire la tâche et que l’application n’a pas à s’exécuter au moins une fois avant d’être mis à jour pour inscrire la tâche en arrière-plan.

L’exemple de code suivant montre un point de départ de base pour une classe de tâche en arrière-plan Update Task en C#. La classe de tâche en arrière-plan elle-même - et toutes les autres classes du projet de tâche en arrière-plan - doivent être publiques et scellées. Votre classe de tâche en arrière-plan doit dériver d’IBackgroundTask et avoir une méthode Run() publique avec la signature indiquée ci-dessous :

using Windows.ApplicationModel.Background;

namespace BackgroundTasks
{
    public sealed class UpdateTask : IBackgroundTask
    {
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            // your app migration/update code here
        }
    }
}

Étape 2 : Déclarer votre tâche en arrière-plan dans le manifeste du package

Dans visual Studio Explorateur de solutions, cliquez avec le bouton droit sur Package.appxmanifest, puis cliquez sur Afficher le code pour afficher le manifeste du package. Ajoutez le code XML suivant <Extensions> pour déclarer votre tâche de mise à jour :

<Package ...>
    ...
  <Applications>  
    <Application ...>  
        ...
      <Extensions>  
        <Extension Category="windows.updateTask"  EntryPoint="BackgroundTasks.UpdateTask">  
        </Extension>  
      </Extensions>

    </Application>  
  </Applications>  
</Package>

Dans le code XML ci-dessus, vérifiez que l’attribut EntryPoint est défini sur le nom namespace.class de votre classe de tâche de mise à jour. Cette valeur respecte la casse.

Étape 3 : Déboguer/tester votre tâche de mise à jour

Vérifiez que vous avez déployé votre application sur votre ordinateur afin qu’il y ait quelque chose à mettre à jour.

Définissez un point d’arrêt dans la méthode Run() de votre tâche en arrière-plan.

définir un point d’arrêt

Ensuite, dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet de votre application (et non sur le projet de tâche en arrière-plan), puis cliquez sur Propriétés. Dans l’application Fenêtre Propriétés, cliquez sur Déboguer sur la gauche, puis sélectionnez Ne pas lancer, mais déboguer mon code au démarrage :

définir les paramètres de débogage

Ensuite, pour vous assurer que UpdateTask est déclenché, augmentez le numéro de version du package. Dans le Explorateur de solutions, double-cliquez sur le fichier Package.appxmanifest de votre application pour ouvrir le concepteur de package, puis mettez à jour le numéro de build :

mettre à jour la version

À présent, dans Visual Studio 2019 lorsque vous appuyez sur F5, votre application est mise à jour et le système active votre composant UpdateTask en arrière-plan. Le débogueur s’attache automatiquement au processus en arrière-plan. Votre point d’arrêt est atteint et vous pouvez parcourir votre logique de code de mise à jour.

Une fois la tâche en arrière-plan terminée, vous pouvez lancer l’application de premier plan à partir du menu Démarrer de Windows dans la même session de débogage. Le débogueur attache automatiquement, cette fois à votre processus de premier plan, et vous pouvez parcourir la logique de votre application.

Remarque

Utilisateurs de Visual Studio 2015 : les étapes ci-dessus s’appliquent à Visual Studio 2017 ou Visual Studio 2019. Si vous utilisez Visual Studio 2015, vous pouvez utiliser les mêmes techniques pour déclencher et tester UpdateTask, sauf que Visual Studio ne l’attachera pas. Une autre procédure dans VS 2015 consiste à configurer une ApplicationTrigger qui définit UpdateTask comme point d’entrée et déclenche l’exécution directement à partir de l’application de premier plan.

Voir aussi

Créer et inscrire une tâche en arrière-plan hors processus