Exécuter une tâche en arrière-plan lorsque votre application UWP est mise à jourRun a background task when your UWP app is updated

Découvrez comment écrire une tâche en arrière-plan qui s’exécute après que votre application de Store plateforme Windows universelle (UWP) a été mise à jour.Learn how to write a background task that runs after your Universal Windows Platform (UWP) store app is updated.

La tâche d’arrière-plan de la tâche de mise à jour est appelée par le système d’exploitation après que l’utilisateur a installé une mise à jour d’une application installée sur l’appareil.The Update Task background task is invoked by the operating system after the user installs an update to an app that is installed on the device. 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 lance votre application mise à jour.This allows your app to perform initialization tasks such as initializing a new push notification channel, updating database schema, and so on, before the user launches your updated app.

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 d’être mise à jour afin d’inscrire la tâche en arrière-plan qui sera activée par le déclencheur ServicingComplete .The Update Task differs from launching a background task using the ServicingComplete trigger because in that case your app must run at least once before it is updated in order to register the background task that will be activated by the ServicingComplete trigger. La tâche de mise à jour n’est pas inscrite. par conséquent, 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.The Update Task isn't registered and so an app that has never been run, but that is upgraded, will still have its update task triggered.

Étape 1 : créer la classe de tâche en arrière-planStep 1: Create the background task class

Comme pour les autres types de tâches en arrière-plan, vous implémentez la tâche d’arrière-plan de tâche de mise à jour en tant que composant Windows Runtime.As with other types of background tasks, you implement the Update Task background task as a Windows Runtime component. Pour créer ce composant, suivez les étapes de la section créer la classe de tâche en arrière-plan de la rubrique créer et inscrire une tâche en arrière-plan out-of-process.To create this component, follow the steps in the Create the Background Task class section of Create and register an out-of-process background task. Procédez comme suit :The steps include:

  • Ajout d’un projet de composant Windows Runtime à votre solution.Adding a Windows Runtime component project to your solution.
  • Création d’une référence à partir de votre application dans le composant.Creating a reference from your app to the component.
  • Création d’une classe publique et sealed dans le composant qui implémente IBackgroundTask.Creating a public, sealed class in the component that implements IBackgroundTask.
  • Implémentation de la méthode Run , qui est le point d’entrée requis qui est appelé lors de l’exécution de la tâche de mise à jour.Implementing the Run method, which is the required entry point that is called when the Update Task is run. Si vous envisagez d’effectuer des appels asynchrones à partir de votre tâche en arrière-plan, créer et inscrire une tâche en arrière-plan out-of-process explique comment utiliser un report dans votre méthode d' exécution .If you are going to make asynchronous calls from your background task, Create and register an out-of-process background task explains how to use a deferral in your Run method.

Vous n’avez pas besoin d’inscrire cette tâche en arrière-plan (la section « enregistrer la tâche en arrière-plan à exécuter » dans la rubrique créer et inscrire une tâche en arrière-plan out-of-process ) pour utiliser la tâche de mise à jour.You don't need to register this background task (the "Register the background task to run" section in the Create and register an out-of-process background task topic) to use the Update Task. Il s’agit de la principale raison d’utiliser une tâche de mise à jour, car vous n’avez pas besoin d’ajouter du code à votre application pour inscrire la tâche et l’application n’a pas besoin d’être exécutée une seule fois avant d’être mise à jour pour enregistrer la tâche en arrière-plan.This is the main reason to use an Update Task because you don't need to add any code to your app to register the task and the app doesn't have to at least run once before being updated to register the background task.

L’exemple de code suivant montre un point de départ de base pour une classe de tâche d’arrière-plan de tâche de mise à jour en C#.The following sample code shows a basic starting point for a Update Task background task class in C#. La classe de tâche d’arrière-plan elle-même-et toutes les autres classes dans le projet de tâche en arrière-plan doivent être publiques et sealed.The background task class itself - and all other classes in the background task project - need to be public and sealed. Votre classe de tâche en arrière-plan doit dériver de IBackgroundTask et avoir une méthode Run () publique avec la signature indiquée ci-dessous :Your background task class must derive from IBackgroundTask and have a public Run() method with the signature shown below:

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 packageStep 2: Declare your background task in the package manifest

Dans le Explorateur de solutions Visual Studio, cliquez avec le bouton droit sur Package. appxmanifest , puis cliquez sur afficher le code pour afficher le manifeste du package.In the Visual Studio Solution Explorer, right-click Package.appxmanifest and click View Code to view the package manifest. Ajoutez le <Extensions> code XML suivant pour déclarer votre tâche de mise à jour :Add the following <Extensions> XML to declare your update task:

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

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

Dans le XML ci-dessus, assurez-vous que l' EntryPoint attribut est défini sur le nom de l’espace de noms. Class de votre classe de tâche de mise à jour.In the XML above, ensure that the EntryPoint attribute is set to the namespace.class name of your update task class. Le nom respecte la casse.The name is case-sensitive.

Étape 3 : déboguer/tester votre tâche de mise à jourStep 3: Debug/test your Update task

Assurez-vous que vous avez déployé votre application sur votre ordinateur pour qu’il y ait une mise à jour.Ensure that you have deployed your app to your machine so that there is something to update.

Définissez un point d’arrêt dans la méthode Run () de votre tâche en arrière-plan.Set a breakpoint in the Run() method of your background task.

définir un point d’arrêt

Ensuite, dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet de votre application (pas le projet de tâche en arrière-plan), puis cliquez sur Propriétés.Next, in the solution explorer, right-click your app's project (not the background task project) and then click Properties. Dans le Fenêtre Propriétés de l’application, cliquez sur Déboguer sur la gauche, puis sélectionnez ne pas lancer, mais déboguer mon code au démarrage:In the application Properties window, click Debug on the left, then select Do not launch, but debug my code when it starts:

définir les paramètres de débogage

Ensuite, pour vous assurer que le UpdateTask est déclenché, augmentez le numéro de version du package.Next, to ensure that the UpdateTask is triggered, increase the package's version number. Dans la Explorateur de solutions, double-cliquez sur le fichier Package. appxmanifest de votre application pour ouvrir le concepteur de packages, puis mettez à jour le numéro de Build :In the Solution Explorer, double-click your app's Package.appxmanifest file to open the package designer, and then update the Build number:

mettre à jour la version

Maintenant, 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.Now, in Visual Studio 2019 when you press F5, your app will be updated and the system will activate your UpdateTask component in the background. Le débogueur est automatiquement attaché au processus en arrière-plan.The debugger will automatically attach to the background process. Votre point d’arrêt est alors atteint et vous pouvez parcourir votre logique de code de mise à jour.Your breakpoint will get hit and you can step through your update code logic.

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 au sein de la même session de débogage.When the background task completes, you can launch the foreground app from the Windows start menu within the same debug session. Le débogueur s’attache à nouveau automatiquement, cette fois à votre processus de premier plan, et vous pouvez effectuer un pas à pas détaillé dans la logique de votre application.The debugger will again automatically attach, this time to your foreground process, and you can step through your app's logic.

Notes

Utilisateurs de Visual Studio 2015 : les étapes ci-dessus s’appliquent à Visual Studio 2017 ou Visual Studio 2019.Visual Studio 2015 users: The above steps apply to Visual Studio 2017 or Visual Studio 2019. Si vous utilisez Visual Studio 2015, vous pouvez utiliser les mêmes techniques pour déclencher et tester le UpdateTask, sauf si Visual Studio ne s’y attache pas.If you are using Visual Studio 2015, you can use the same techniques to trigger and test the UpdateTask, except Visual Studio will not attach to it. Une autre procédure dans VS 2015 consiste à configurer un ApplicationTrigger qui définit UpdateTask comme point d’entrée et à déclencher l’exécution directement à partir de l’application de premier plan.An alternative procedure in VS 2015 is to setup an ApplicationTrigger that sets the UpdateTask as its Entry Point, and trigger the execution directly from the foreground app.

Voir aussiSee also

Créer et inscrire une tâche en arrière-plan hors processusCreate and register an out-of-process background task