2013-08-16 4 views
0

У меня есть приложение WPF, в которое я добавляю некоторый верхний уровень, поймаю всю обработку ошибок. Я обрабатывать событие DispatcherUnhandledException так:Попытка показать диалог в DispatcherUnhandledException

private void App_OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 
    { 
     if (_isHandlingError) 
     { 
      _log.Error("Critical unhandled error", e.Exception); 
      e.Handled = true; 
      return; 
     } 

     _isHandlingError = true; 
     var vm = _windsorContainer.Resolve<ErrorReporterViewModel>(); 

     Dispatcher.Invoke(() => 
     { 
      vm.Details = FailureMessageBuilder.CreateContent(e.Exception); 
      var view = new ErrorReporterView { DataContext = vm }; 

      view.Show(); 
     }); 

     e.Handled = true; 

     NotifyOfException(e.Exception, vm.Description); 

     _isHandlingError = false; 
    } 

Проблема в том, что вызов Показать() (или ShowDialog) никогда не возвращается, а диалоговое окно ошибки никогда не отображается.

В чем может быть проблема?

+1

Вы отлажена его? –

+0

Наверное, нет..Многие люди, которых я замечаю, не знают, как даже использовать отладчик .., что такое пародия ... – MethodMan

+0

Просто, чтобы уточнить - событие срабатывает, и вызывается обработчик. Но вызов Show никогда не возвращается. – Avram

ответ

0

Вы связали свое мероприятие с Заявлением?

cApp.Dispatcher.UnhandledException += new DispatcherUnhandledExceptionEventHandler(Dispatcher_UnhandledException); 
       cApp.InitializeComponent(); 
       cApp.Run(new MainWindow()); 

А потом

private static void Dispatcher_UnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 
     { 
...e.Exception.Message 
} 
+0

Просто, чтобы уточнить - событие срабатывает, и обработчик называется. Но вызов Show никогда не возвращается. – Avram

Смежные вопросы