В моем App.xaml.cs у меня есть события для обработки DispatcherUnhandledExceptions (поток пользовательского интерфейса) и UnhandledException (поток не пользовательского интерфейса). Когда я генерирую исключение внутри dispatcher.Invoke, диспетчер обрабатывает исключение и обрабатывает его. Я устанавливаю e.Handled в true после регистрации исключения. Теперь странное поведение, если я выбрасываю исключение за пределами диспетчера. Вызывает как регулярное утверждение, управление отправляется обработчику исключений диспетчера, но после обработки метода приложение в основном теряет управление, но я могу сказать, что оно все еще работает, посмотрев на кнопку остановки по сравнению с
еще одна вещь, если для e.handled задано значение false, управление отправляется обработчику исключений потока не-пользовательского интерфейса.
Так что меня озадачивает, почему приложение блокируется после обработки исключения в обработчике диспетчера?
вот мой код
private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
// log exception here
e.Handled = true;
} // control is lost after executing this block
private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = e.ExceptionObject as Exception;
// log exception here
}
finally
{
Environment.Exit(-1);
}
}