Ausführen einer Hintergrundaufgabe beim Aktualisieren der UWP-AppRun a background task when your UWP app is updated

Erfahren Sie, wie Sie eine Hintergrundaufgabe schreiben, die ausgeführt wird, nachdem die universelle Windows-Plattform (UWP) Store-APP aktualisiert wurde.Learn how to write a background task that runs after your Universal Windows Platform (UWP) store app is updated.

Der Task "Task Hintergrund aktualisieren" wird vom Betriebssystem aufgerufen, nachdem der Benutzer ein Update für eine APP installiert hat, die auf dem Gerät installiert ist.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. Dadurch kann Ihre APP Initialisierungs Aufgaben ausführen, wie z. b. das Initialisieren eines neuen pushbenachrichtigungskanals, das Aktualisieren des Datenbankschemas usw., bevor der Benutzer die aktualisierte APP aufruft.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.

Der Aktualisierungs Task unterscheidet sich vom Starten einer Hintergrundaufgabe mithilfe des servicingcomplete -Auslösers, da die app in diesem Fall mindestens einmal ausgeführt werden muss, bevor Sie aktualisiert wird, um die Hintergrundaufgabe zu registrieren, die durch den servicingcomplete -Befehl aktiviert wird.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. Der Aktualisierungs Task ist nicht registriert, und eine APP, die noch nicht ausgeführt wurde, für die jedoch ein Upgrade ausgeführt wurde, wird weiterhin die Aktualisierungs Aufgabe auslösen.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.

Schritt 1: Erstellen der Hintergrundaufgaben KlasseStep 1: Create the background task class

Wie bei anderen Arten von Hintergrundaufgaben implementieren Sie den Task Hintergrundaufgabe aktualisieren als Windows-Runtime Komponente.As with other types of background tasks, you implement the Update Task background task as a Windows Runtime component. Um diese Komponente zu erstellen, führen Sie die Schritte im Abschnitt erstellen der Hintergrundaufgaben Klasse unter Erstellen und Registrieren eines Out-of-Process-Hintergrund Tasks aus.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. Dazu müssen folgende Schritte ausgeführt werden:The steps include:

  • Fügen Sie der Projekt Mappe ein Windows-Runtime Komponenten Projekt hinzu.Adding a Windows Runtime component project to your solution.
  • Erstellen eines Verweises von Ihrer APP auf die Komponente.Creating a reference from your app to the component.
  • Erstellen einer öffentlichen, versiegelten Klasse in der Komponente, die ibackgroundtaskimplementiert.Creating a public, sealed class in the component that implements IBackgroundTask.
  • Implementieren der Run -Methode, bei der es sich um den erforderlichen Einstiegspunkt handelt, der beim Ausführen der Update Aufgabe aufgerufen wird.Implementing the Run method, which is the required entry point that is called when the Update Task is run. Wenn Sie asynchrone Aufrufe von ihrer Hintergrundaufgabe ausführen möchten, Erstellen und registrieren Sie eine Out-of-Process-Hintergrundaufgabe , die die Verwendung einer Verzögerung in der Ausführungs Methode erläutert .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.

Sie müssen diese Hintergrundaufgabe nicht registrieren (den Abschnitt "Hintergrundaufgabe zum Ausführen registrieren" im Thema Erstellen und Registrieren eines Out-of-Process-Hintergrund Tasks), um den Aktualisierungs Task zu verwenden.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. Dies ist der Hauptgrund für die Verwendung einer Aktualisierungs Aufgabe, da Sie Ihrer APP keinen Code hinzufügen müssen, um die Aufgabe zu registrieren, und die APP muss nicht mindestens einmal ausgeführt werden, bevor Sie aktualisiert wird, um die Hintergrundaufgabe zu registrieren.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.

Der folgende Beispielcode zeigt einen grundlegenden Ausgangspunkt für eine Aufgaben Klasse des Hintergrund Tasks für Aktualisierungs Aufgaben in c#.The following sample code shows a basic starting point for a Update Task background task class in C#. Die Hintergrundaufgaben Klasse selbst und alle anderen Klassen im Hintergrundaufgaben Projekt müssen öffentlich und versiegeltsein.The background task class itself - and all other classes in the background task project - need to be public and sealed. Ihre Hintergrundaufgaben Klasse muss von ibackgroundtask abgeleitet werden und eine Public Run () -Methode mit der folgenden Signatur aufweisen: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
        }
    }
}

Schritt 2: Deklarieren der Hintergrundaufgabe im Paket ManifestStep 2: Declare your background task in the package manifest

Klicken Sie in der Visual Studio-Projektmappen-Explorer mit der rechten Maustaste auf Package. appxmanifest , und klicken Sie auf Code anzeigen , um das Paket Manifest anzuzeigen.In the Visual Studio Solution Explorer, right-click Package.appxmanifest and click View Code to view the package manifest. Fügen Sie den folgenden XML-Code hinzu <Extensions> , um den Aktualisierungs Task zuAdd 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>

Stellen Sie im obigen XML-Code sicher, dass das- EntryPoint Attribut auf den Namespace. Class-Namen Ihrer Update-Aufgaben Klasse festgelegt ist.In the XML above, ensure that the EntryPoint attribute is set to the namespace.class name of your update task class. Bei dem Namen wird die Groß- und Kleinschreibung berücksichtigt.The name is case-sensitive.

Schritt 3: Debuggen/testen des Aktualisierungs TasksStep 3: Debug/test your Update task

Stellen Sie sicher, dass Sie die APP auf Ihrem Computer bereitgestellt haben, damit etwas zu aktualisieren ist.Ensure that you have deployed your app to your machine so that there is something to update.

Legen Sie einen Haltepunkt in der Run ()-Methode Ihrer Hintergrundaufgabe fest.Set a breakpoint in the Run() method of your background task.

Haltepunkt festlegen

Klicken Sie anschließend im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt Ihrer APP (nicht auf das Projekt "Hintergrundaufgabe") und dann auf Eigenschaften.Next, in the solution explorer, right-click your app's project (not the background task project) and then click Properties. Klicken Sie im Anwendungs Eigenschaftenfenster auf der linken Seite auf Debuggen , und wählen Sie dann nicht starten, sondern eigenen Code Debuggenaus:In the application Properties window, click Debug on the left, then select Do not launch, but debug my code when it starts:

Festlegen der Debugeinstellungen

Um sicherzustellen, dass Updatetask ausgelöst wird, erhöhen Sie als nächstes die Versionsnummer des Pakets.Next, to ensure that the UpdateTask is triggered, increase the package's version number. Doppelklicken Sie im Projektmappen-Explorer auf die Datei " Package. appxmanifest " Ihrer APP, um den Paket -Designer zu öffnen, und aktualisieren Sie dann die Buildnummer:In the Solution Explorer, double-click your app's Package.appxmanifest file to open the package designer, and then update the Build number:

Aktualisieren der Version

Wenn Sie jetzt F5 drücken, wird Ihre APP in Visual Studio 2019 aktualisiert, und das System aktiviert die Updatetask-Komponente im Hintergrund.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. Der Debugger wird automatisch an den Hintergrundprozess angefügt.The debugger will automatically attach to the background process. Der Breakpoint wird angezeigt, und Sie können die Update Code Logik schrittweise durchlaufen.Your breakpoint will get hit and you can step through your update code logic.

Wenn die Hintergrundaufgabe abgeschlossen ist, können Sie die Vordergrund-App im Windows-Startmenü innerhalb derselben Debugsitzung starten.When the background task completes, you can launch the foreground app from the Windows start menu within the same debug session. Der Debugger wird automatisch an den Vordergrund Prozess angehängt, und Sie können die Logik der APP schrittweise durchlaufen.The debugger will again automatically attach, this time to your foreground process, and you can step through your app's logic.

Hinweis

Visual Studio 2015-Benutzer: die oben genannten Schritte gelten für Visual Studio 2017 oder Visual Studio 2019.Visual Studio 2015 users: The above steps apply to Visual Studio 2017 or Visual Studio 2019. Wenn Sie Visual Studio 2015 verwenden, können Sie die gleichen Techniken verwenden, um Updatetask zu aktivieren und zu testen, mit der Ausnahme, dass Visual Studio nicht an Sie angefügt wird.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. Eine alternative Vorgehensweise in vs 2015 besteht darin, einen applicationtrigger einzurichten, der Updatetask als Einstiegspunkt festlegt und die Ausführung direkt aus der Vordergrund-App auslöst.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.

Weitere InformationenSee also

Erstellen und Registrieren einer Hintergrundaufgabe außerhalb von ProzessenCreate and register an out-of-process background task