我最近在一份遗留代码中发现了一个多线程模式,该模式依赖于Thread.Abort()
方法来取消对外部系统的同时请求。其中一个不良后果是很难区分超时异常和其他异常类型。
除此之外,还有哪些原因不能在多线程控制流中使用ThreadAbortException
呢?
我最近在一份遗留代码中发现了一个多线程模式,该模式依赖于Thread.Abort()
方法来取消对外部系统的同时请求。其中一个不良后果是很难区分超时异常和其他异常类型。
除此之外,还有哪些原因不能在多线程控制流中使用ThreadAbortException
呢?
Thread.Abort
更安全、更干净。使用CancellationToken
和CancellationTokenSource
可以让您以清晰的方式设计适当的取消,并且线程可以正确地处理自己的清理工作。
Thread.Abort
就像是在想让司机停车时朝他的头部开枪。无论哪种方式,汽车都会停下来,但前者的后果是不可预测的,可能会对其他人以及司机本人造成灾难性的影响。 - Jim Mischel