У меня есть приложение WPF, которое раскручивает несколько потоков. Я определил обработчик события DispatcherUnhandledException в App.xaml.cs, который отображает подробное сообщение об ошибке, и этот обработчик вызывается каждый раз, когда поток пользовательского интерфейса встречает исключение. Проблема в дочерних потоках: их необработанные исключения никогда не обрабатываются. Как мне это сделать?
Пример кода:
private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
MessageBox.Show("detailed error message");
}
private void Application_Startup(object sender, StartupEventArgs e)
{
//...
//If an Exception is thrown here, it is handled
//...
Thread[] threads = new Thread[numThreads];
for(int i = 0; i < numThreads; i++)
{
threads[i] = new Thread(doWork);
threads[i].Start();
}
}
private void doWork()
{
//...
//Exception thrown here and is NOT handled
//...
}
Редактировать: Как только возникает необработанное исключение, я хочу отобразить сообщение об ошибке с трассировкой стека, а затем выйти из приложения.