MSDNによれば、AppDomain.Unloadは、AppDomainのアンロード中のすべてのスレッドがスレッドの中断例外をスローするようにします。AppDomain.Unloadと関連するThreadAbortExceptionを処理する方法
ドメイン内のスレッドは、スレッド内でThreadAbortExceptionをスローするAbortメソッドを使用して終了されます。スレッド は即座に終了する必要がありますが、finally節では予測できないほどの時間が の間実行され続けます。 - MSDN
からだから私の理解は、このアプリケーションドメインで実行されることが予想されるたびに、私はどこにもコードを書いているということですが、私はスレッドアボートは、いつでも任意のスレッド上で発生する可能性があることを期待しなければなりません。これは本当ですか? どこのコードでも、いつでもThreadAbortExceptionをスローすることができるはずですか?
実際この事実elimatesキャッチ(例外の例)のAppDomainのアンロードが本当にないので、それは(ThreadAbortExceptionのをキャッチし、それを処理しようとすると、通常、実際に記録されるべきではないエラーのログを記録することであろうから例外)。
不必要な例外処理/エラーロギングを避けるために他の考慮事項がありますか?
どこのコードでも、いつでもThreadAbortExceptionをスローすることができますか?また、ThreadAbortExceptionを処理するので、catch(Exception ex)を実質的に排除しますか?私の質問では、私はtry catchでハンドルを意味するわけではありませんでしたが、一般的にどのスレッドでスレッド例外をスローすることができるのかをコード化する必要があります – Mark
それ自身の後でクリーンアップする必要がある作業は、パターン、場合によってはトランザクションが含まれます。しかし、ほとんどのコードはそれを必要としません。 – Aliostad
実際には、catchブロックで 'Thread.ResetAbort()'を発行することによって、 'ThreadAbortException'をキャッチすることができます。 –