API per il riavvio

L'API di riavvio consente a qualsiasi app, incluse le app Win32 sia in pacchetto che non in pacchetto, di terminare e riavviarsi su comando, compresa la possibilità 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 Creare ed eseguire un progetto WinUI 3.
  2. Seguire le istruzioni per creare ed eseguire un progetto WinUI 3 o per usare il SDK per app di Windows 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 è completamente sincrono e non è necessaria alcuna ulteriore azione o gestione. 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.