为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森栏 2019-06-13 17:47:31
使用Thread.Abort()有什么问题?所以我知道你不应该用Thread.Abort()但我从来没有得到过一个很好的解释。是表演上的惩罚还是隐藏的问题?我知道您不能忽略/吞下ThreadAbortException(这是有意义的)
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

除了这里所有其他好的答案之外,让我补充一点,对线程的调用是没有任何保证的,事实上,Abort会中止所讨论的线程。可以(虽然不是特别容易)“硬化”线程以防止中止。例如,如果您认为某个线程正在运行敌对代码,则该敌对代码可能正在抵抗其自身的破坏。

如果您有一个长期运行的操作,涉及您不拥有的代码,而这些代码必须干净地删除,则正确的方法是将该代码放入自己的代码中。加工过程而不是它自己的线。(最好是在该过程中高度安全的应用程序域中。)然后,您可以干净地终止该过程。

总之,Thread.Abort充其量只能表明设计错误,可能不可靠,而且极其危险。应该不惜一切代价避免它;您甚至应该考虑中止线程的唯一时间是在某种类型的“紧急关机”代码中,您试图尽可能清晰地删除appDomain。


查看完整回答
反对 回复 2019-06-13
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

因为如果您知道线程处于某种可以中止的安全状态,那么您当然可以安排更好的通信,并让线程干净地退出。

线程可能已经锁定并处于更改某些共享状态的中间,而线程将撤消锁并使共享状态被破坏。


查看完整回答
反对 回复 2019-06-13
  • 3 回答
  • 0 关注
  • 1239 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信