Questo è relativo a previous question.Perché le eccezioni AppDomain terminano invariabilmente l'applicazione?
Quello che sto cercando di capire ora è come le eccezioni del thread dell'interfaccia utente possono essere impedite dal terminare l'applicazione mentre le eccezioni non-UI non possono essere.
Per riferimento, vedere this example.
Ancora più importante, quello che vorrei essere in grado di fare in quel caso è "silenziosamente" terminare il processo - senza visualizzare la finestra di dialogo di Windows che chiede se mi piacerebbe inviare un rapporto di errore o meno.
Questo è il mio dominio di applicazione UnhandledExceptionHandler:
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
// Maybe do some logging here if allowed
}
catch
{
}
// then just terminate the application
Application.Exit();
}
UPDATE
Alla luce delle osservazioni in this answer, vorrei precisare che la cosa più importante mi piacerebbe saperne di più circa il meccanismo che consente al thread dell'interfaccia utente di avere una prima opportunità di rilevare eccezioni non gestite tramite il meccanismo Application.ThreadException
. E se tale comportamento potrebbe essere implementato su un thread non UI.
@Reed: "le eccezioni non gestite nel thread UI causerà lo stesso cosa succederà. " - questo non è vero. Si prega di creare un'applicazione di prova e provarla personalmente. –
Tecnicamente, avrei dovuto dire "Eccezioni non gestite sul thread principale". Windows Form aggiunge il proprio comportamento di gestione delle eccezioni sul thread dell'interfaccia utente (poiché è interamente in esecuzione sul thread dell'interfaccia utente) che modifica il comportamento del thread principale. Crea un'applicazione per console, e prova questo, e vedrai che non importa quale argomento avvenga: tutti abbatteranno l'applicazione. –
Quindi dovrei riaffermare la mia domanda: in che modo il thread UI realizza il suo comportamento generale di gestione delle eccezioni? È qualcosa che potrei replicare come comportamento per un thread non UI? –