【问题标题】:How does the CLR raise ThreadAbortException?CLR 如何引发 ThreadAbortException?
【发布时间】:2011-04-22 09:35:27
【问题描述】:

如果您使用 Thread.Abort 从另一个托管线程中止一个托管线程,CLR 如何实际在另一个线程上抛出异常?看起来很巧妙!

【问题讨论】:

    标签: clr threadabortexception


    【解决方案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

    【讨论】:

      【解决方案2】:

      不久前我写了一篇关于此的博客文章。第一部分是关于何时可以中止线程,第二部分是关于它的实际工作方式。

      我从未见过任何关于它实际工作原理的正确(在这种情况下是完整的)文档,所以我写了一篇关于它的文章。

      关键是 CLR 将使用 SetThreadContext(一个 win32 api)劫持您当前的 IP 并将您移动到一个特殊的存根中,以在您的线程未处于可中止等待状态时设置线程中止。

      Check out the post here

      【讨论】:

        猜你喜欢
        • 2012-01-04
        • 2011-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-11
        • 1970-01-01
        • 1970-01-01
        • 2015-10-07
        相关资源
        最近更新 更多