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:
- Scaricare e installare la versione più recente di SDK per app di Windows. Per altre informazioni, vedere Introduzione a WinUI.
- 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.