.Dispose()如何在C#中工作?

时间:2011-09-06 18:32:31

标签: c# garbage-collection dispose

  

可能重复:
  Proper use of the IDisposable interface
  When is Dispose necessary?

如果我编写一个使用图形或线程的类,我必须实现IDisposable接口来编写Dispose()方法,否则会发生内存泄漏? 当GC到达时,Dipose()会运行吗? 如果我实现了Dispose()方法,当“disposing”参数为true时,我应该在类中的所有一次性字段上调用Dispose(),还是自动? 什么是“非托管资源”?

所以我很不确定,我很感激能帮助我理解这些东西:) 谢谢

1 个答案:

答案 0 :(得分:0)

IDisposable只是一种模式。它本身并没有做任何特殊的事情(除了符合using statement的要求之外)。

如果您正在使用本机资源,则资源不会被垃圾收集器“知道”。 IDisposable是用于允许您确定性地释放此资源的约定。

有关详细信息,我编写了一个detailed series on IDisposable,其中讨论了为什么以及如何在各种场景中实现它(包括包装本机资源,封装其他IDispsable类型等)。