有关DispatcherUnhandledException的问题

时间:2011-01-13 21:44:57

标签: c#

此代码中的问题是,当它运行并按下“是”按钮时,显示如下:

alt text

这意味着我的应用程序停止工作,我只是想让它结束。

private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            string message = "An unhandled exception has ocurred, do you want close the app?";
            MessageBoxResult currentMB = MessageBox.Show(message, "SomeTitleApp", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);

            if (currentMB == MessageBoxResult.Yes)
            { Application.Current.Shutdown(); }
            else
            { e.Handled = true; }
        }

2 个答案:

答案 0 :(得分:2)

DispatcherUnhandledException不是正确的。只有在UI线程上的代码发生爆炸时才会引发这种情况。你可能在工作线程上或在应用程序开始之前就已经开始使用kaboom了。

您必须为AppDomain.CurrentDomain.UnhandledException编写事件处理程序。调用Environment.Exit()会停止显示WER对话框。确保记录某些东西,没有人会非常关心那些因为一些可追溯的原因突然闪现的应用程序。记录e.ExceptionObject.ToString()以获取异常消息并记录堆栈跟踪。通常足以诊断问题。

答案 1 :(得分:1)

MSDN说: 只能从创建Application对象的线程调用此方法。你确定你从正确的线程中调用shutdown吗?