此代码中的问题是,当它运行并按下“是”按钮时,显示如下:
这意味着我的应用程序停止工作,我只是想让它结束。
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; }
}
答案 0 :(得分:2)
DispatcherUnhandledException不是正确的。只有在UI线程上的代码发生爆炸时才会引发这种情况。你可能在工作线程上或在应用程序开始之前就已经开始使用kaboom了。
您必须为AppDomain.CurrentDomain.UnhandledException编写事件处理程序。调用Environment.Exit()会停止显示WER对话框。确保记录某些东西,没有人会非常关心那些因为一些可追溯的原因突然闪现的应用程序。记录e.ExceptionObject.ToString()以获取异常消息并记录堆栈跟踪。通常足以诊断问题。
答案 1 :(得分:1)
MSDN说: 只能从创建Application对象的线程调用此方法。你确定你从正确的线程中调用shutdown吗?