メイン以外のスレッドでの例外をメインスレッドで拾うには?


ひろ  2007-03-13 20:55:16  No: 135745

VB2003からVB2005へプログラムを移行したところ、メイン以外のスレッドでの例外をメインスレッドで拾えなくなってしまいました。

調べてみると、MSのサイトに以下のような記事がありました。
が、「一時的な対応の手段として、以前の動作に戻すスイッチが構成ファイルで提供されます。 」とあるのですが、このスイッチが何かわかりません。
ご存知の方、教えてください。

〜〜〜〜〜

タイトル 処理されない例外は、プロセスにとって必ず致命的となります。 
影響を受ける API なし 重大度 低 互換性スイッチが使用可能 いいえ 

説明 処理されない例外は、プロセスにとって必ず致命的となります。 

ユーザー シナリオ アプリケーションは、メイン スレッド以外のスレッド (または、外部からランタイムに入るスレッド) で処理されない例外をスローした場合、実行を続行せずに、停止します (異常終了の可能性があります)。 

対処法 メイン以外のスレッド、スレッドプール ワークアイテム、またはファイナライザの最初にキャッチ構文を置きます。(または、例外を発生させているバグを修正します。) 一時的な対応の手段として、以前の動作に戻すスイッチが構成ファイルで提供されます。


ひろ  2007-03-13 22:18:02  No: 135746

すみません。読み直したらわかりにくい気がするので、補足します。

>MSのサイト
こちらのページのことです。
http://www.microsoft.com/japan/msdn/netframework/programming/breakingchanges/runtime/clr.aspx

.Net FrameWork 1.1から2.0への重大な変更点のひとつのようです。

・Application.ThreadException
・Thread.GetDomain().UnhandledException
・System.AppDomain.CurrentDomain.UnhandledException

これらのイベントで拾おうとしてもエラーが起きたその場でプログラムが終了してしまっているみたいです。

よろしくお願いします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加