Questa è la classe ThreadExceptionDialog, che deriva dalla classe Form. Derivando da esso per alterare la finestra di dialogo è una causa persa, non è possibile accedere facilmente ai controlli incorporati. È possibile creare la propria classe derivata da Form per creare la propria finestra di dialogo altrettanto bene, basta dargli un costruttore che accetta un argomento Exception. Implementare un gestore di eventi per Application.ThreadException per visualizzarlo.
Annotare il difetto fondamentale nella finestra di dialogo. Si aspetta che l'utente faccia la scelta giusta quando ha bisogno di fare clic su un pulsante per chiudere la finestra di dialogo. Con, in generale, informazioni abbastanza oscure su cosa esattamente è andato storto. Significa qualcosa per te, raramente qualcosa di più di "oh merda" per l'utente. Fare clic sul pulsante Continua non è in genere la cosa giusta da fare.
Per evitare che l'utente debba effettuare una scelta così difficile, chiamare Application.SetUnhandledExceptionMode() nel metodo Main(), superando ThrowException in modo che l'evento non venga mai generato. Ogni eccezione non gestita ora passa attraverso AppDomain.UnhandledException. Includendo quelli che sono stati generati in un thread di lavoro, le eccezioni che non producono producono la finestra di dialogo. Scrivi un gestore di eventi per esso e visualizza e/o registra il valore di e.ExceptionObject.ToString(). Spetta a te scegliere un modo per ottenere tali informazioni alla tua scrivania, o al personale IT dell'utente, in modo da poter migliorare il tuo prodotto e possono rendere le loro macchine stabili.
fonte
2010-11-01 14:06:55