所以我知道你不应该用
Thread.Abort()
但我从来没有得到过一个好的解释.有没有表现惩罚或隐藏的trap ?
我知道你不能忽视/吞下ThreadAbortException
(这是有道理的)
所以我知道你不应该用
Thread.Abort()
但我从来没有得到过一个好的解释.有没有表现惩罚或隐藏的trap ?
我知道你不能忽视/吞下ThreadAbortException
(这是有道理的)
除了这里所有其他的好答案,让我补充一点,没有任何保证调用线程.Abort实际上会中止正在讨论的线程.可以(尽管不是特别容易)使线程"硬化"以防被中止.例如,如果您正在中止一个线程,因为您认为它正在运行恶意代码,那么恶意代码可能正在抵抗它自己的 destruct .
如果您有一个长期运行的操作,涉及到您不拥有的代码,必须将其清除,正确的方法是将该代码放入它自己的process,而不是它自己的线程中.(最好是在该过程中的高度安全限制的appdomain中.)然后你可以干净利落地终止这个过程.
简而言之,Thread.Abort充其量表示糟糕的设计,可能不可靠,而且极其危险.应该不惜一切代价避免这种情况;您唯一应该考虑中止线程的时候是在某种"紧急关机"代码中,在这种代码中,您试图尽可能干净地拆除appdomain.