使用Thread.Abort()有什么问题?

使用Thread.Abort()有什么问题?

所以我知道你不应该用

Thread.Abort()

但我从来没有得到过一个很好的解释。是表演上的惩罚还是隐藏的问题?

我知道您不能忽略/吞下ThreadAbortException(这是有意义的)


森栏
浏览 1240回答 3
3回答

四季花海

除了这里所有其他好的答案之外,让我补充一点,对线程的调用是没有任何保证的,事实上,Abort会中止所讨论的线程。可以(虽然不是特别容易)“硬化”线程以防止中止。例如,如果您认为某个线程正在运行敌对代码,则该敌对代码可能正在抵抗其自身的破坏。如果您有一个长期运行的操作,涉及您不拥有的代码,而这些代码必须干净地删除,则正确的方法是将该代码放入自己的代码中。加工过程而不是它自己的线。(最好是在该过程中高度安全的应用程序域中。)然后,您可以干净地终止该过程。总之,Thread.Abort充其量只能表明设计错误,可能不可靠,而且极其危险。应该不惜一切代价避免它;您甚至应该考虑中止线程的唯一时间是在某种类型的“紧急关机”代码中,您试图尽可能清晰地删除appDomain。

红颜莎娜

因为如果您知道线程处于某种可以中止的安全状态,那么您当然可以安排更好的通信,并让线程干净地退出。线程可能已经锁定并处于更改某些共享状态的中间,而线程将撤消锁并使共享状态被破坏。
打开App,查看更多内容
随时随地看视频慕课网APP