1

在我的 C# 应用程序中,即使我处理异常:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

然后在显示对话框并执行 Application.Exit 的处理程序中仍然使用 Send,Don't Send... 获取 Windows 错误报告对话框

如何防止弹出windows错误报告对话框?


事实上,如果异常是从主窗体构造函数中抛出的,那么程序会以 Windows 错误报告 dlg 结束。否则,如果来自 UI 线程的其他位置,则如预期的那样。

4

3 回答 3

2

您需要自己终止应用程序。这将做到:

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
  var ex = e.ExceptionObject as Exception;
  MessageBox.Show(ex.ToString());
  if (!System.Diagnostics.Debugger.IsAttached)
    Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(ex));
}
于 2010-04-13T16:32:30.507 回答
1

显示向 Microsoft 发送或不发送错误报告的选项的对话框超出了例外情况。如果您使用 unsafe{} 块或使用执行某些非法操作的 p/invoke 块,则可能会发生这种情况。

于 2010-04-13T14:35:48.730 回答
-1

我认为您不应该与问题的症状作斗争。首先不应该发生未处理的异常。

您对导致它们的原因有任何线索吗?

于 2010-04-13T14:16:09.520 回答