1

UnobservedTaskExceptionを処理して、ファイナライザがオブジェクトで実行されているときに観察できない例外がアプリケーションを終了させないようにすることができます。観測されていないタスクの例外の処理

ただし、このイベントのハンドラを設定する場所や時期はわかりません。 TaskSchedulerクラス内のイベント自体のXMLドキュメントは言う:

/// This AppDomain-wide event provides a mechanism to prevent exception 
/// escalation policy (which, by default, terminates the process) from triggering. 
/// Each handler is passed a <see cref="T:System.Threading.Tasks.UnobservedTaskExceptionEventArgs"/> 
/// instance, which may be used to examine the exception and to mark it as observed. 

これは私だけ全体のAppDomainで1つのハンドラを必要とするということですか?そして、観察されないタスクの例外はすべてそれによって処理されるでしょうか?

アセンブリごとまたはクラスごとにハンドラが必要ですが、そのアセンブリ/クラス内のタスクからの観察されない例外だけがそのハンドラに移動しますか?

答えて

2

per-app-domainはすべてです。 Taskクラスの静的イベントです。論理アプリケーションの起動時に確実にフックする必要があります。したがって、コンソールアプリケーションの場合は、他の作業を開始する前にメインに接続してください。 ASP.NETアプリケーションの場合は、Global.asax Application_Startに接続してください。 OnStartのWindowsサービスの場合。

+0

これは私が返信のおかげで思ったことです。 – Lyall

+0

@Drew Marshこんにちは、私はそれをしましたが、ここで解決していません:http://stackoverflow.com/questions/11831844/unobservedtaskexception-being-throw-but-it-is-handled-by-a-taskscheduler-unobser – newway

関連する問題