因此,我尝试将“AppDomain.CurrentDomain.UnhandledException
“处理程序添加到我的应用程序中,如果我将错误记录到文本文件中,它可以正常工作。但当我尝试使用MessageBox时,它永远不会弹出。这是.Net中的另一个bug吗?有什么想法吗?
下面是我代码示例:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
这是我的处理方法
static void CurrentDomain_UnhandledException (object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
MessageBox.Show("Whoops! Please contact the developers with "
+ "the following information:\r\n\r\n" + ex.Message + ex.StackTrace,
"Fatal Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}
**编辑:**我尝试了所有可能的选项,但仍然看不到MessageBox。现在的问题是,当我从Visual C#(调试模式)运行它时,它完美地显示了该框。但当我直接从调试/发布文件夹运行应用程序时,它不显示MessageBox,应用程序继续运行,就像没有发生任何错误一样...
3条答案
按热度按时间3bygqnnd1#
这个例子在调试模式和发布模式下对我有效,不管是否使用VS2010:
表单的代码
EDIT现在使用计时器,结果相同....
um6iljoc2#
这种情况可能是因为
Unhandled
Exceptions
导致应用程序静默终止,而UnhandledExceptionEventHandler
处理非UI线程异常。参见Application.SetUnhandledExceptionMode方法、AppDomain.UnhandledException事件和Application.ThreadException事件
**编辑:**尝试按照第一个链接设置
Application.SetUnhandledExceptionMode
:epfja78i3#
有点晚到党,但没有可行的解决方案显示在这里。我补充说
应用程序.DoEvents();
就在消息框和MessageBox现在显示之前。
希望这能帮到什么人。