1

Thread.Abort を使用して、あるマネージド スレッドから別のマネージド スレッドを中止する場合、CLR は実際にどのようにして他のスレッドで例外をスローするのでしょうか? 巧妙なトリックのようです!

4

2 に答える 2

1

この件に関するいくつかの興味深いリンクを見つけました。ThreadAbortException は特別なケースであり、CLR によって特別に処理されます。

http://mnikoo.net/2007/02/07/the-magic-of-the-clr-threadabortexception/

http://blogs.msdn.com/b/clrteam/archive/2009/04/28/threadabortexception.aspx

于 2011-06-03T09:43:54.330 に答える
1

これについては、しばらく前にブログ記事を書きました。最初の部分はいつスレッドを中止できるかについてであり、2 番目の部分はスレッドが実際にどのように機能するかについてです。

それが実際にどのように機能するかについての正しい (この場合は完全な) ドキュメントを見たことがなかったので、それについて書きました。

要するに、CLR は SetThreadContext (win32 api) を使用して現在の IP を乗っ取り、特別なスタブに移動して、スレッドが中止可能な待機状態にない場合にスレッドの中止を設定します。

ここの投稿をチェックしてください

于 2011-06-15T01:02:15.320 に答える