Nic*_*ick 6 c# multithreading idisposable
我有一个使用Thread类的类:
class A
{
public Thread thread
{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我应该实现IDisposable并将Thread属性设置为null吗?
class A : IDisposable
{
public Thread Thread
{ get; set; }
protected bool Disposed
{ get; set; }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this.Disposed)
{
if (disposing)
{
if (Thread != null)
Thread = null;
}
Disposed = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或不?
为什么?
IDisposable仅当您的类处理非托管对象,资源或其他IDisposable对象时才实现.线程不是非托管对象,并且在没有任何引用它时或者处理它的进程终止时将收集垃圾.由于Thread没有实现IDisposable,因此引用它的类也不需要实现它.
(可选)IDisposable在方法范围内,可以将它们包装在using语句中,并在退出范围时自动调用Dispose()方法.