防止实时调试器窗口显示

本文关键字:窗口 显示 调试器 实时 | 更新日期: 2023-09-27 18:18:20

我有一个混合了WindowsForms和WPF的应用程序。

在Main方法中我有:

AppDomain.Currentdomain.UnhandledException += 
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

在CurrentDomain_UnhandledException方法中,我显示了一个带有"继续"answers"退出"按钮的对话框。当用户点击"退出"按钮时,我关闭对话框并调用应用程序。退出(新CancelEventArgs(真))。当用户点击"继续"按钮时,我只是关闭了对话框。

现在,当其中一个Wpf表单打开并发生异常时,然后出现这个对话框,我单击"继续"或"退出"按钮,我得到这个即时调试器窗口和应用程序在这两种情况下关闭。如何防止这种情况?

防止实时调试器窗口显示

您需要使用应用程序。DispatcherUnhandledException

我们这样使用:

System.Windows.Application.Current.DispatcherUnhandledException +=
    OnWpfUnhandledException;

你需要设置e.Handled = true

这只是不是如何AppDomain。UnhandledException事件起作用。当它被触发时,你的程序已经死了,不能继续了。调用Application.Exit()不会达到预期的效果。你也不应该调用它,因为它方式太危险了,因为它很容易导致另一次崩溃。

事件处理程序运行时结束,程序不能继续运行。尽量少做,只记录异常或显示一个消息框。您将希望保留e.n unhandledexception . tostring(),因为它给出了崩溃原因和堆栈跟踪,这对于诊断崩溃原因非常有价值。

从事件处理程序返回会导致正常的未处理异常处理发生,开发机器上的JIT调试器,用户机器上的Windows错误报告对话框。您需要调用Environment.Exit(),以便程序终止。