Share via


Eseguire un'attività in background quando l'app UWP viene aggiornata

Istruzioni su come scrivere un'attività in background che viene eseguita dopo che l'app dello Store piattaforma UWP (Universal Windows Platform) viene aggiornata.

L'attività in background aggiorna attività viene richiamata dal sistema operativo dopo che l'utente installa un aggiornamento a un'app installata nel dispositivo. Ciò consente all'app di eseguire attività di inizializzazione, ad esempio l'inizializzazione di un nuovo canale di notifica push, l'aggiornamento dello schema del database e così via, prima che l'utente avvii l'app aggiornata.

L'attività di aggiornamento è diversa dall'avvio di un'attività in background usando il trigger ServicingComplete perché in tal caso l'app deve essere eseguita almeno una volta prima che venga aggiornata per registrare l'attività in background che verrà attivata dal trigger ServicingComplete. L'attività di aggiornamento non è registrata e quindi un'app che non è mai stata eseguita, ma che viene aggiornata, avrà comunque attivato l'attività di aggiornamento.

Passaggio 1: Creare la classe di attività in background

Come per altri tipi di attività in background, si implementa l'attività in background Aggiorna attività come componente Windows Runtime. Per creare questo componente, seguire la procedura descritta nella sezione Creare la classe Attività in background di Creare e registrare un'attività in background out-of-process. Questi passaggi includono:

  • Aggiunta di un progetto componente Windows Runtime alla soluzione.
  • Creazione di un riferimento dall'app al componente.
  • Creazione di una classe pubblica e sigillata nel componente che implementa IBackgroundTask.
  • Implementazione del metodo Run, ovvero il punto di ingresso necessario chiamato quando viene eseguita l'attività di aggiornamento. Se si intende effettuare chiamate asincrone dall'attività in background, creare e registrare un'attività in background out-of-process spiega come usare un differimento nel metodo Run.

Non è necessario registrare questa attività in background (la sezione "Registrare l'attività in background da eseguire" nell'argomento Creare e registrare un'attività in background out-of-process) per usare l'attività aggiornamento. Questo è il motivo principale per usare un'attività di aggiornamento perché non è necessario aggiungere codice all'app per registrare l'attività e l'app non deve essere eseguita almeno una volta prima di essere aggiornata per registrare l'attività in background.

Il codice di esempio seguente mostra un punto di partenza di base per una classe di attività in background Update Task in C#. La classe di attività in background stessa, e tutte le altre classi nel progetto di attività in background, devono essere pubbliche e sigillate. La classe di attività in background deve derivare da IBackgroundTask e avere un metodo Run() pubblico con la firma illustrata di seguito:

using Windows.ApplicationModel.Background;

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

Passaggio 2: Dichiarare l'attività in background nel manifesto del pacchetto

In Esplora soluzioni Visual Studio fare clic con il pulsante tasto destro del mouse su Package.appxmanifest e selezionare Visualizza codice per visualizzare il manifesto del pacchetto. Aggiungere il codice XML seguente <Extensions> per dichiarare l'attività di aggiornamento:

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

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

Nel codice XML precedente verificare che l'attributo EntryPoint sia impostato sul nome namespace.class della classe dell'attività di aggiornamento. Per il nome è rilevante la distinzione tra maiuscole e minuscole.

Passaggio 3: Eseguire il debug/testa dell'attività di aggiornamento

Assicurarsi di aver distribuito l'app nel computer in modo che sia presente un elemento da aggiornare.

Impostare un punto di interruzione nel metodo Run() dell'attività in background.

set breakpoint

Quindi, in esplora soluzioni, fare clic con il tasto destro del mouse sul progetto dell'app (non sul progetto di attività in background) e quindi fare clic su Proprietà. Nella finestra Proprietà applicazione fare clic su Debug a sinistra, quindi selezionare Non avviare, ma eseguire il debug del codice all'avvio:

set debug settings

Successivamente, per assicurarsi che UpdateTask sia attivato, aumentare il numero di versione del pacchetto. In Esplora soluzioni fare doppio clic sul file Package.appxmanifest dell'app per aprire lo strumento di progettazione pacchetti e quindi aggiornare il numero di Build:

update the version

Ora, in Visual Studio 2019 quando si preme F5, l'app verrà aggiornata e il sistema attiverà il componente UpdateTask in background. Il debugger verrà collegato automaticamente al processo in background. Il punto di interruzione verrà raggiunto ed è possibile eseguire la logica del codice di aggiornamento.

Al termine dell'attività in background, è possibile avviare l'app in primo piano dal menu Start di Windows all'interno della stessa sessione di debug. Il debugger si connetterà di nuovo automaticamente, questa volta al processo in primo piano ed è possibile scorrere la logica dell'app.

Nota

Utenti di Visual Studio 2015: i passaggi precedenti si applicano a Visual Studio 2017 o Visual Studio 2019. Se si usa Visual Studio 2015, è possibile usare le stesse tecniche per attivare e testare UpdateTask, ad eccezione del fatto che Visual Studio non verrà collegato. Una procedura alternativa in VS 2015 consiste nel configurare un ApplicationTrigger che imposta UpdateTask come punto di ingresso e attiva l'esecuzione direttamente dall'app in primo piano.

Vedi anche

Creare e registrare un'attività in background out-of-process