C# Winforms不客气地与“退出”;“未处理的异常”;

C# Winforms不客气地与“退出”;“未处理的异常”;,c#,.net,winforms,exception,C#,.net,Winforms,Exception,程序弹出其中一个框,说明发生了未处理的异常,应用程序必须退出。我得到的解决问题的唯一线索是事件日志中的以下内容: 事件类型:错误 事件源:.NET运行时2.0错误报告 活动类别:无 活动编号:5000 日期:1/9/2009 时间:上午8:47:44 用户:不适用 计算机:DADIEHL 说明: 事件类型clr20r3、P1 crm.client.exe、P2 1.0.1.0、P3 49667f61、P4 mscorlib、P5 2.0.0.0、P6 471ebc5b、P7 c35、P8 59、

程序弹出其中一个框,说明发生了未处理的异常,应用程序必须退出。我得到的解决问题的唯一线索是事件日志中的以下内容:

事件类型:错误 事件源:.NET运行时2.0错误报告 活动类别:无 活动编号:5000 日期:1/9/2009 时间:上午8:47:44 用户:不适用 计算机:DADIEHL 说明: 事件类型clr20r3、P1 crm.client.exe、P2 1.0.1.0、P3 49667f61、P4 mscorlib、P5 2.0.0.0、P6 471ebc5b、P7 c35、P8 59、P9 system.formatexception、P10 NIL

因此,我在program.cs中添加了以下代码:

try
{
    Application.Run(new WindowContainer());
}
catch (Exception exc)
{
    new DialogException(exc).ShowDialog();
}

这样我就可以捕捉到任何异常,但用户仍然收到相同的消息,说应用程序必须退出。我无法在我的计算机上复制它,因此无法使用调试器缩小它的范围。有人知道收集更多信息的方法吗,或者知道问题是什么吗?

很可能是在不同的线程上引发了异常

您可能希望向其中添加处理程序的两个事件:

添加记录异常的处理程序,您将获得更多信息


非UI线程中未处理异常的行为从.NET 1.1更改为2.0。他们过去只是被吞食,但现在他们停止了应用程序。如果你愿意的话,你可以使用app.config标志来选择旧的行为——但这并不是真正的建议,因为另一个线程中的异常很可能意味着你的应用现在不稳定。我现在记不起设置的详细信息,但如果您愿意,我可以查找它们。

如果您不想立即更改代码,我可能会将WinDbg与SOS扩展一起使用,这样您至少可以获得堆栈跟踪,这对于此类崩溃非常方便

您可以尝试处理未处理的ExceptionEvent。从MSDN:


谢谢。我现在正在努力解决这个问题,这是我在谷歌搜索了几个小时后发现的第一个有用的帖子。