2

私はかなり一貫して失敗するC#プログラムを持っています。それは大丈夫です、私はプログラムを作成しました、それは私の子供です、そしてとにかくそれが大好きです。一種のサポートとして、AutoHotKeyラッパーを作成することにしました。これは、エラーなしで終了するまでプログラムを自動的に再起動します。さて、これが私をひどい父親にしないことを願っていますが、C#プログラムに対するもう1つの願いがあります。

助けを求めてWindows7を実行せずに失敗する可能性がある場合のみ。問題は、「はい、プログラムを閉じて、デバッグしないでください」と言う必要があることです。Windowsが問題の解決策を見つけることができると考えた後。

プログラムを文句なしに単純に失敗させるにはどうすればよいですか?検討すべきPDFがさらに約5500あり、ツインプログラムがそれらの間で物事を整理できることを誇りに思います。

4

3 に答える 3

3

これはすでに解決されているようですが、次のようになります。

SetErrorModeは、現在のプロセスのWindowsエラー報告ダイアログボックスを完全に非アクティブ化できるようです。(テスト済みで、私の人為的なアクセス違反に対して機能します。)

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

uModeを、、つまりに設定SEM_NOGPFAULTERRORBOX0x0002ます。

(ところで:あなたはレミングプログラムを作成したようですので、あなたはレミングの父親です。)

于 2012-06-11T13:15:30.640 に答える
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

または、失敗が多いモジュールがある場合は、次のことができます。

  • System.Diagnostics.Processを使用して、別のプロセスとして開始します。
  • 別のAppDomain (処理中) を使用します。障害を検出した場合は、プロセスをアンロードします。

症状と戦おうとするのではなく、問題を解決しようとします。

于 2012-06-11T12:35:04.950 に答える