2

我们有一个 C# 应用程序,它连接到 AppDomain.UnhandlerExceptions 并侦听应用程序中任何未处理的异常。一旦出现未处理的异常,它就会向用户显示一条错误消息,并通过调用 Environment.FailFast 来终止应用程序。

问题是在某些机器上,这会导致向用户显示“未知硬错误”消息,并且应用程序在我们单击“确定”之前不会退出。

操作系统是带有 .NET 4 应用程序的 Windows 7 x64。

4

2 回答 2

5

我们联系了微软,结果发现这是因为Windows 机器上的Windows 错误报告服务被禁用。

调用流程是这样的:

  1. 应用程序通过调用 Environment.FailFast 自行终止。
  2. CLR 检查是否有任何调试器已注册来处理异常。如果注册了调试器,则异常由调试器处理。
  3. 如果没有调试器,CLR 会尝试将异常传递给操作系统。它尝试启动Windows 错误报告服务并将异常传递给它。
  4. 万一它无法启动Windows 错误报告服务,它会在内核中排队一个未知的硬错误,并向用户显示未知的硬错误消息。
于 2012-11-09T19:48:29.183 回答
-1

进行这些更改后为我解决了问题!可能是 DLL 问题,在开始编译之前一定要检查。1.check platform target 应该是 x64 的 debug 或者 Release 模式。2.然后保存并开始调试,最好在代码中尝试和捕获,这是一个很好的做法

于 2020-02-06T09:50:36.840 回答