Dlaczego wyjątki AppDomain niezmiennie kończą aplikację?
Jest to związane z apoprzednie pytanie.
Próbuję teraz zrozumieć, jak można zapobiec wyłączaniu aplikacji przez wyjątki wątków interfejsu użytkownika, podczas gdy wyjątki inne niż UI nie mogą być.
Dla odniesienia patrzten przykład.
Co najważniejsze, w tym przypadku chciałbym móc „cicho” zakończyć proces - bez wyświetlania okna dialogowego Windows z pytaniem, czy chcę wysłać raport o błędzie, czy nie.
To moja aplikacja AppDomain 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();
}
AKTUALIZACJA
W świetle komentarzy wta odpowiedź, Chciałbym wyjaśnić, że co najważniejsze chciałbym dowiedzieć się więcej o mechanizmie, który umożliwia wątkowi interfejsu użytkownika wczesne wyłapywanie nieobsłużonych wyjątków za pośrednictwemApplication.ThreadException
mechanizm. I czy takie zachowanie może być zaimplementowane w wątku innym niż UI.