Windows Presentation Foundation è un framework che rivoluziona il modo di fare applicazioni e le possibilità grafiche che si hanno a disposizione, ma che di fatto poggia il sistema di gestione degli eventi e degli input allo stesso modo di Windows. Infatti in modo simile alla message pump, in WPF il Dispatcher è il motore responsabile di eseguire le operazioni una dietro l'altra, per input, animazioni ed eventi, secondo una priorità.
Nel caso si verifichi però un'eccezione, il thread su cui gira il Dispatcher normalmente termina causando la completa chiusura dell'applicazione stessa che senza di esso non può funzionare. Poiché è difficile gestire per ogni evento correttamente le eccezioni, per evitare problemi e prevedere il peggio, è possibile intercettare l'evento DispatcherUnhandledException per l'intero Dispatcher così da avere una gestione centralizzata. Nell'argomento si riceve poi l'eccezione e vi è la possibilità di inibire l'errore impostando a true la proprietà Handled.
public class App : Application { protected virtual void OnStartup(StartupEventArgs e) { base.OnStartup(e); this.DispatcherUnhandledException += OnDispatcherError; } void OnDispatcherError(object sender, DispatcherUnhandledExceptionEventArgs e) { // Inibisco tutti gli errori e.Handled = true; // Mostro il messaggio MessageBox.Show(e.Exception.Message); } }
Normalmente il Dispatcher è uno solo (il thread principale) ed è perciò possibile accedere a tale oggetto direttamente con la proprietà Application.Current.DispatcherUnhandledException oppure direttamente nella classe Application come fatto nell'esempio precedente. Si ricordi infine che comunque è sempre necessario gestire le eccezioni in modo specifico prevedendole a seconda delle operazioni che si stanno svolgendo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Personalizzare la pagina di errore con ASP.NET
- Windows Phone 8 usa IE10 come browser, quindi pieno supporto ad HTML5, compresi i ... https://aspit.co/wp-summit #WPSummit
- siete pronti? la #netconfit torna anche nel 2019!.NET Conference Italia 2019 sarà trasmessa live il 23 ottobre.Info e iscrizioni su => https://aspit.co/netconf-19
- Identificare una classe come complex type con Entity Framework Code First
- Applicare effetti bitmap agli elementi di WPF
- Data binding con ADO.NET
- Utilizzare controlli ASP.NET iterativi annidati