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
- Ricavare l'indirizzo completo della pagina che esegue lo script
- Tutorial ASP.NET
- Windows 7 Installation Fest - Roma, Firenze
- Container & DevOps Day - Online
- .NET Conference Italia 2021 - Online
- .NET Conference Italia 2022 - Milano e Online
- SQL Server 2008 February CTP
- Mono 0.12: verso una nuova implementazione di ASP.NET
- Tutto per portarsi ASP.NET 4.0, Silverlight 4.0 e .NET Framework 4.0 sotto l'ombrellone