我注意到System.Threading.Thread实现了一个finalizer,但不是IDisposable.推荐的做法是在执行终结器时始终实现IDisposable.杰弗里·里奇特
wrote指出,这个指导方针“非常重要,应该永远无一例外”.
那么为什么Thread不实现IDisposable?似乎实现IDisposable将是一个不间断的变化,将允许确定性地清理Thread的可完成资源.
还有一个相关的问题:由于线程是可以完成的,我必须持有对正在运行的线程的引用,以防止它们在执行期间被完成?
解决方法
什么会处理一个Thread对象?这种情况下的“资源”有自己的自然清理 – 线程整理.请注意,所有权感也缺少…在执行的线程中,您可以随时使用Thread.CurrentThread,因此只有该线程才能够声明任何类型的所有权.
基本上我认为线程是一个稍微不寻常的情况 – 底层资源有一生,但它不是明确清理的东西.