C# 线程终止(Abort)的原理

1个评论267次阅读2010.08.17 8:37 作者:Felicia 编辑

[阅读更多]

假设有两个线程A和B,A调用了b.Abort,这句的作用就是,无论B运行到哪里了,在B中当前运行点上抛出ThreadAbortException,A中无法catch到这个Exception,因为它根本不在A中。B可以用catch探测到这个异常,但这个异常会在B的每层catch的末尾自动重新抛出,所以实际上无法被B的任何catch语句真的catch住,他会一直抛出到B的最顶层,使得B被中断。

综上所述,不是将要终结B线程时用ThreadAbortException通知B,而是B就是被这个ThreadAbortException本身终结的,这个异常就是终结线程的原理。通知只是其附加功能。不是因为终结是非正常或者什么什么其他原因所以才要抛这个异常,而是就通过此异常终结线程,没有这个异常就不能使线程终结。

标签 | 日志分类:C#