質問

私はC#アプリケーションは、U-Eに遭遇するたびに、Windowsが未処理の例外ダイアログフォームのデフォルト取得したいです。

:私はこのようなapp.confにJITデバッグをオフにVS 2005で
<configuration>
   <system.windows.forms jitDebugging="false" />
<configuration>

アプリケーションの振る舞いを正しくやショーWindowsが終了し、続行、コールスタックとすべてで、U-Eのデフォルトのダイアログフォームます。

しかし、VS 2008、同じマシン上または別の中にもかかわらず、私ディアブルJIT私はまだGETデフォルト.NET未処理の例外ダイアログ、デバッグして、ボタンを送信していない報告書およびDOを送信します。

どのようにして作ることができます私の私は、WindowsがU-E]ダイアログボックスをフォーム表示するには、VS 2005で行ったような2008年のアプリの行為対?

使用することをお勧めしないでください
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

私はVS 2008で使用することになり、なぜ私のVS 2005プロジェクトにカスタムハンドラを使用していないという理由だけで?私はこの仕事がCLRを行うようにしたい。

すべてのヘルプは高く評価され、

役に立ちましたか?

解決

あなたは異なる例外処理機能について話しています。 ThreadExceptionDialog のあなたが終了し、続行を見ますボタンは Application.ThreadExceptionイベントによってトリガーされますA>。例外は、Windowsメッセージに応答して実行されるイベントハンドラが例外をスローUIスレッド上で発生した場合にのみ、これまで表示されます。ワーカースレッド内のすべての例外は、しかしAppDomain.UnhandledExceptionを通じてプログラムを爆撃されます。

あなたは後者を扱うことができない、プログラムが死んでいると続行できません。 ThreadExceptionDialogは無意味で表示します。

あなたはApplication.SetUnhandledExceptionMode()を呼び出すことによってThreadExceptionイベントを無効にすることで、一貫プログラム爆弾を作ることができます。今、すべての未処理の例外がAppDomain.UnhandledExceptionをトリガし、プログラムを終了します。それはあなたが望むものはおそらくないですが、賢明な選択です。

また、あなたは、デバッガでプログラムを実行するとThreadExceptionイベントが無効になっていることに注意してください。あなたはどちらVS2008の違いを参照してください理由は、おそらくです。そうでない場合は変更されていません。

scroll top