如果您使用Thread.Abort从一个托管线程中止另一个托管线程,那么CLR实际上是如何在另一个线程上引发异常的?看起来像是一个巧妙的把戏!
发布于 2011-06-03 17:43:54
我在这个主题上找到了一些有趣的链接。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-15 09:02:15
前段时间我写了一篇关于这个的博文。第一部分是关于何时可以中止线程,第二部分是关于线程的实际工作方式。
我从来没有看到过任何关于它实际工作原理的正确(在本例中是完整的)文档,所以我写了关于它的文章。
关键是,如果你的线程没有处于可中止的等待状态,CLR将使用SetThreadContext (一种win32应用程序接口)来劫持你的当前IP,并将你移到一个特殊的存根中来设置线程中止。
Check out the post here
https://stackoverflow.com/questions/5754162
复制相似问题