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
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Ricevere notifiche sui test con Azure Load Testing
Utilizzare WhenEach per processare i risultati di una lista di task
Utilizzare l nesting nativo dei CSS
Introduzione alle Container Queries
Generare un hash con SHA-3 in .NET
Eseguire script pre e post esecuzione di un workflow di GitHub
Collegare applicazioni server e client con .NET Aspire
Generare velocemente pagine CRUD in Blazor con QuickGrid
Utilizzare i variable font nel CSS
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Utilizzare gRPC su App Service di Azure
I più letti di oggi
- Impostare deploy automatici su Azure Web Sites tramite Team Foundation Service
- Utilizzare Hybrid Cache in .NET 9
- SQL Server 2008 rimandato al terzo trimestre
- Microsoft Security Bulletin MS03-023
- Rilasciata la beta 1 di Mono
- Disponibili le estensioni WinFX per VS 2005 beta 2
- Microsoft Security Bulletin MS06-001
- Visual Studio Code: costruire web app per Windows, Linux e MacOSX
- Utilizzare Glimpse con ASP.NET in produzione per utenti amministratori