gpt4 book ai didi

c# - Windows 窗体未处理异常对话框

转载 作者:太空狗 更新时间:2023-10-30 00:09:13 26 4
gpt4 key购买 nike

每当我的 C# 应用程序遇到 U-E 时,我都想获得默认的 Windows 窗体未处理异常对话框。在 vs 2005 中,当我像这样在 app.conf 中关闭 jit 调试时:

<configuration>
<system.windows.forms jitDebugging="false" />
<configuration>

应用程序正常运行并显示 Windows 窗体 U-E 默认对话框,包括继续、退出、调用堆栈和所有内容。

但是在 vs 2008 中,无论在同一台机器上还是不同的机器上,即使我禁用了 jit,我仍然会看到默认的 .NET 未处理异常对话框,带有调试、发送报告和不发送按钮。

如何使我的 vs 2008 应用程序像我在 vs 2005 中创建的应用程序一样显示 Windows 窗体 U-E 对话框?

请勿推荐使用

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

仅仅因为我不在 vs 2005 项目中使用自定义处理程序,为什么我要在 vs 2008 中使用?我想让这个工作做CLR。

感谢任何帮助

最佳答案

您在谈论不同的异常处理功能。 ThreadExceptionDialog您看到的退出和继续按钮是由 Application.ThreadException event 触发的.它只会在 UI 线程上发生异常时出现,当响应 Windows 消息而运行的事件处理程序抛出异常时。然而,工作线程中的任何异常都会通过 AppDomain.UnhandledException 轰炸程序。

你不能处理后者,程序已经死了,无法继续。显示 ThreadExceptionDialog 毫无意义。

您可以通过调用 Application.SetUnhandledExceptionMode() 来禁用 ThreadException 事件,从而使程序不断地爆炸。现在每个未处理的异常都会触发 AppDomain.UnhandledException 并终止程序。这可能不是您想要的,但却是明智的选择。

另请注意,当您使用调试器运行程序时,ThreadException 事件将被禁用。这大概就是您在 VS2008 中看到差异的原因。否则没有任何变化。

关于c# - Windows 窗体未处理异常对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com