2

我有一个经常失败的 C# 程序。没关系,我已经创建了这个程序,它是我的孩子,无论如何我都喜欢它。作为一种支持,我决定围绕它编写一个 AutoHotKey 包装器,它会自动重新启动程序,直到它完成且没有错误。现在,我希望这不会让我成为一个糟糕的父亲,但我对 C# 程序还有一个愿望:

如果它在不运行到 Windows 7 寻求帮助的情况下失败就好了。问题是它需要我说“是的,关闭程序,不要调试它”。在 Windows 认为它​​可以找到解决问题的方法之后。

我怎样才能让程序毫无怨言地失败?它还有大约 5500 个 PDF 需要考虑,如果这两个程序能够相互解决问题,我会感到自豪。

4

3 回答 3

3

或者,如果有一个模块失败了很多,你可以:

我会尝试解决问题,而不是试图对抗症状。

于 2012-06-11T12:35:04.950 回答
3

修复您的孩子将是首选路径,但或者,您可以使用以下注册表项来禁用提示

来自 MSDN

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting]
"ForceQueue"=dword:00000001
"DontShowUI"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\Consent]
"DefaultConsent"=dword:00000002
于 2012-06-11T12:36:25.403 回答
3

这似乎已经解决了,但是:

SetErrorMode似乎能够为您当前的进程完全停用 Windows 错误报告对话框。(经过测试并适用于我的人为访问违规。)

[DllImport("kernel32.dll")]
public static extern uint SetErrorMode(uint uMode);    // from msdn page

将 uMode 设置为SEM_NOGPFAULTERRORBOX,即0x0002

(顺便说一句:似乎你已经创建了一个旅鼠程序,所以你是一个旅鼠父亲。)

于 2012-06-11T13:15:30.640 回答