c# – 我应该为包含Thread的类实现IDisposable

前端之家收集整理的这篇文章主要介绍了c# – 我应该为包含Thread的类实现IDisposable前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用 Thread类的类:
  1. class A
  2. {
  3. public Thread thread
  4. { get; set; }
  5. }

我应该实现IDisposable并将Thread属性设置为null吗?

  1. class A : IDisposable
  2. {
  3. public Thread Thread
  4. { get; set; }
  5.  
  6. protected bool Disposed
  7. { get; set; }
  8.  
  9.  
  10. public void Dispose()
  11. {
  12. Dispose(true);
  13. GC.SuppressFinalize(this);
  14. }
  15.  
  16. protected virtual void Dispose(bool disposing)
  17. {
  18. if (!this.Disposed)
  19. {
  20. if (disposing)
  21. {
  22. if (Thread != null)
  23. Thread = null;
  24. }
  25.  
  26. Disposed = true;
  27. }
  28. }
  29. }

或不?
为什么?

解决方法

只有当您的类处理非托管对象,资源或其他IDisposable对象时,才实现IDisposable.线程不是非托管对象,并且在没有任何引用它时或者处理它的进程终止时将收集垃圾.由于Thread没有实现IDisposable,因此引用它的类也不需要实现它.

(可选)对于方法范围内的IDisposable,可以将它们包装在using语句中,并在退出作用域时自动调用Dispose()方法.

猜你在找的C#相关文章