我有一个WPF应用程序,我正在添加一些顶级,捕获所有错误处理。我像这样处理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;
}
问题是,对Show()(或ShowDialog)的调用永远不会返回,并且永远不会显示错误对话框。
可能是什么问题?
答案 0 :(得分: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
}