1

タスク ベース (TPL) のスレッド モデルを使用しています。アプリケーション (WPF) を起動するときに、TaskScheduler.UnobservedTaskExceptionを登録してメッセージを表示します。

ただし、例外が発生した場合 (例:Task.Factory.StartNew(() => throw new Exception());)、UnobservedTaskException イベントが発生するまでにかなりの時間がかかります (3 ~ 10 秒)。

すぐに(または少なくとも非常に迅速に)提起したいのですが、ここで何が起こるかについて何か考えはありますか?

よろしく

4

2 に答える 2

2

これは、そのスレッドのファイナライザーがまだ実行されていないためです。これはガベージ コレクションで発生するため、非決定的です。さらに、CLR は、それをすぐにスローするか、タスクの結果を確認するか、Wait()自分で例外を呼び出して監視するかをどのように決定しますか?

Break on First Chance Exceptions を有効にすると、デバッグ中にスローされます。

結合スレッドに伝播され、保証されます。.NET 4.0 を使用している場合、プロセスは終了します。.NET 4.5 を使用している場合は、

于 2012-09-12T14:12:25.360 に答える