Глобальный обработчик исключений для приложения MVVM Light

Я пытаюсь создать простой глобальный обработчик исключений в приложении WPF, созданном с помощью MVVM Light Toolkit, но мне трудно заставить его работать.

Дело в том, что исключение, возникшее в модели представления, не будет перехвачено в обработчике UnhandledException приложения, хотя я регистрирую прослушиватель и для Dispatcher, и для AppDomain следующим образом:

private void Application_Startup(object sender, StartupEventArgs e)
{
   AppDomain.CurrentDomain.UnhandledException += DomainUnhandledException;
   DispatcherUnhandledException += App_DispatcherUnhandledException;
}

private void DomainUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs)
{
   var exception = unhandledExceptionEventArgs.ExceptionObject as Exception;
   ShowExceptionMessage(exception);
}
private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
   ShowExceptionMessage(e.Exception);
   e.Handled = true;
}

Я нашел этот блог сообщение , в котором описывается проблема, а решение, описанное с помощью этого кода, вырезано для моделей представления:

// Throw the exception in the UI thread.
App.Current.RootVisual.Dispatcher.BeginInvoke(() => { throw new MyException(); });

Однако я хотел бы, чтобы все исключения всплывали в глобальный обработчик исключений, а не только те, которые я бросаю сам в ВМ.

Итак, вопрос: можно ли каким-то образом повторно выдать исключения из других потоков в поток пользовательского интерфейса в одном месте?

Обновление: добавлен более подробный код для настройки обработчика событий приложения.

6
задан Marcos Dimitrio 6 June 2016 в 14:54
поделиться