API di riavvio

L'Api di riavvio consente alle app, incluse quelle Win32 in pacchetto e non in pacchetto, di terminare e riavviarsi a comando, nonché l'abilità di fornire una stringa arbitraria della riga di comando per l'istanza riavviata.

Definizione

public static AppRestartFailureReason Restart(String arguments)

Parametri

arguments: Stringa

Gli argomenti da passare all'istanza riavviata.

Valori restituiti

L'API di riavvio restituisce un AppRestartFailureReason.

Prerequisiti

Per usare l'API ciclo di vita dell'app nella SDK per app di Windows:

  1. Scaricare e installare la versione più recente di SDK per app di Windows. Per altre informazioni, vedere Introduzione a WinUI.
  2. Seguire le istruzioni per Creare il primo progetto WinUI 3 o per Usare Windows App SDK in un progetto esistente.

Che cos'è questo metodo di riavvio?

Per le app Win32, è possibile il seguente meccanismo di riavvio:

  • La funzione RegisterApplicationRestart dell'API Win32 permette a un'app di registrarsi autonomamente per essere riavviata dopo la terminazione e per fornire una stringa arbitraria della riga di comando per l'istanza riavviata. I motivi della terminazione includono arresto anomalo o sospensione, aggiornamento dell'app o aggiornamento del sistema.

Esisteva comunque un divario per il seguente scenario:

  • Le app Win32 possono registrarsi con il sistema operativo per riavviarsi in determinati stati dell'app/sistema operativo, ma non possono procedere a un riavvio da uno stato di integrità

L'API di riavvio permette alle applicazioni Win32 di arrestarsi e riavviarsi a comando e si allinea all'esistente CoreApplication.RequestRestartAsync di CoreApplication.

Riavvio con argomenti della riga di comando

È sufficiente chiamare il metodo di riavvio e specificare una stringa arbitraria della riga di comando con la quale l'istanza riavviata verrà riavviata. Il riavvio viene completato in modo sincrono e non servono altre azioni o gestioni. Se il riavvio non riesce per qualsiasi motivo, il metodo di riavvio restituisce il motivo dell'errore.

Esempi

private void restartAfterUpdate()
{
    AppRestartFailureReason restartError = AppInstance.Restart(restartArgsInput);

    switch (restartError)
    {
        case AppRestartFailureReason.RestartPending:
            SendToast("Another restart is currently pending.");
            break;
        case AppRestartFailureReason.InvalidUser:
            SendToast("Current user is not signed in or not a valid user.");
            break;
        case AppRestartFailureReason.Other:
            SendToast("Failure restarting.");
            break;
    }
}

Per vedere esempi di riavvio, visitare il repository WindowsAppSDK-Samples.