正在尝试显示DispatcherUnhandledException上的对话框

本文关键字:对话框 DispatcherUnhandledException 显示 | 更新日期: 2023-09-27 18:27:59

我有一个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)的调用永远不会返回,错误对话框也永远不会显示。

可能是什么问题?

正在尝试显示DispatcherUnhandledException上的对话框

您是否已将事件附加到应用程序?

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
}