在使用C#和.NET Framework 4在VS2010中创建新的Windows Forms应用程序时,用户遇到一个关于未处理异常的异常行为。在Form1_Load处理程序中添加特定代码后,预期在某一行出现的未处理异常消息没有显示。相反,代码执行跳过该行没有任何错误,应用程序继续运行。
这种特殊的行为归因于32位代码通过wow64模拟层与64位Windows 7交互的方式。问题在于此层拦截来自响应64位窗口管理器生成的通知的代码的异常。结果,调试器无法识别和进入异常。
为了解决这个问题,提出了几种解决方法:
将平台目标设置为AnyCPU并取消选中“首选32位”
这种方法将应用程序更改为以64位进程运行,消除了wow64模拟层及其相关的异常问题。但是,它可能会影响“编辑并继续”功能,并且对于依赖于32位代码的情况可能不可行。
其他解决方法
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
以禁用调试模式下的异常捕获。以上是VS2010为什么不显示64位Winforms应用程序中的未手动异常消息?的详细内容。更多信息请关注PHP中文网其他相关文章!