Ci possono essere diversi scenari che richiedono il riavvio di un'applicazione: dalla validazione di una licenza, allo sblocco di nuovi contenuti, alla fix di uno stato non stabile di un'applicazione, al completamento del setup stesso all'interno dell'app. Fino a pochi giorni fa, l'unica strada percorribile era suggerire all'utente il riavvio dell'applicazione manualmente, oppure forzare la sola chiusura dell'app, nella speranza che l'utente capisse di dover avviare nuovamente l'eseguibile e non lo intuisse come un crash.
A partire dal Fall Creators Update di Windows 10, e più precisamente dalla build 16226, è stata introdotta una nuova API che permette sia la terminazione che il riavvio dell'applicazione stessa, con la possibilità di integrare dei parametri, recuperabili all'avvio successivo. L'API di riferimento è la RequestRestartAsync ed è esposta come un metodo statico all'interno della classe CoreApplication:
var payload = "parametro recuperato al prossimo riavvio"; AppRestartFailureReason result = await CoreApplication.RequestRestartAsync(payload); if (result == AppRestartFailureReason.NotInForeground || result == AppRestartFailureReason.RestartPending || result == AppRestartFailureReason.Other) { // si è verificato un errore }
Per motivi relativi alla privacy e per mitigare il problema che l'utente possa percepire il riavvio come un crash, questa API funziona solamente quando l'app è in modalità Foreground e quindi ben visibile. Se l'applicazione è, ad esempio, in background, ed è necessario riavviare, bisognerà prendere un'azione tale per capire quando ritornerà in foreground e quindi pianificare il riavvio.
Al momento del riavvio, si potranno recuperare tutti i parametri nel modo classico, ovvero dal metodo OnActivated della classe App, in cui il tipo degli argomenti sarà LaunchActivatedEventArgs, mentre il PreviousExecutionState sarà impostato al valore Terminated.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Azure AI Studio per testare i modelli AI
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Potenziare Azure AI Search con la ricerca vettoriale
Utilizzare un service principal per accedere a Azure Container Registry
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Copiare automaticamente le secret tra più repository di GitHub
Utilizzare Tailwind CSS all'interno di React: primi componenti
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Inizializzare i container in Azure Container Apps
Utilizzare gli snapshot con Azure File shares
I più letti di oggi
- L'evoluzione di Blazor in .NET 8
- C# 4 e .NET 4
- Usare le navigation property in QuickGrid di Blazor
- Estrarre dati randomici da una lista di oggetti in C#
- Usare il colore CSS per migliorare lo stile della pagina
- Migliorare la sicurezza dei prompt con Azure AI Studio
- Utilizzare QuickGrid di Blazor con Entity Framework