Vi sono situazioni in cui nella propria applicazione è necessario forzare la chiusura dell'applicazione. Si pensi ad esempio a popup di autorizzazione a certe attività o policy che, se rifiutate, non permettono all'app di proseguire, oppure ancora, in seguito al tap su una tile o una toast, eseguite le attività richieste, si vuole terminare l'app senza che l'utente debba premere necessariamente un pulsante.
In queste situazioni, diversamente dalle API di XNA che per questioni di policy non è possibile utilizzare, non è presente un metodo apposito per forzare la chiusura dell'app, ma è possibile sfruttare un piccolo trucchetto per raggiungere questo scopo.
L'idea è semplice: basta lanciare un'eccezione a noi conosciuta e automaticamente l'app viene chiusa dal sistema. Per non gestirla è opportuno che nell'evento Application.UnhandledException, che solitamente viene intercettato nell'App.xaml.cs, non si inibisca l'errore ne lo si notifichi all'utente, come nell'esempio:
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { // Eccezione per uscire, non faccio niente if (e.ExceptionObject is QuitException) return; // Inibisco l'errore così l'app prosegue normalmente e.Handled = true; }
A questo punto, quando si vuole chiudere l'applicazione è sufficiente lanciare l'eccezione.
public class QuitException : Exception { } throw new QuitException();
Nell'esempio si sfrutta un'eccezione personalizzata di tipo QuitException per semplificare la sua identificazione e riconoscerla facilmente anche quando questa comparirà nei report dei crash dell'applicazione, che per ovvie ragioni si può ignorare.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire progetti NPM in .NET Aspire
Introduzione ai web component HTML
Gestire gli accessi con Token su Azure Container Registry
Gestire il routing HTTP in Azure Container App
Migliorare l'organizzazione delle risorse con Azure Policy
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Supportare la crittografia di ASP.NET Core con Azure Container App
Managed deployment strategy in Azure DevOps
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Proteggere le risorse Azure con private link e private endpoints
.NET Conference Italia 2024
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Gestione ciclo di vita in .NET Aspire
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!