IDisposable接口的主要用途

可能重复:
正确使用IDisposable接口

“IDisposable接口”文章讲述:

该接口的主要用途是释放非托管资源

为什么? 为什么只有非托管?

整个我的生活,我认为它的PRIMIRALY使用是释放任何资源:托管(连接数据库,服务代理等)和非托管(如果他们在应用程序中使用)。

PS

我相信这个主题已经有问题了,但是找不到它们。


数据库的底层连接不受管理,文件句柄和许多其他低级别的o / s对象也是如此。 他们是非托管的。 实现一个IDisposable接口意味着你不仅仅依靠垃圾收集器来释放这些资源; 但是您正在使用您可用的低级API来关闭这些资源。

另外,我认为Eric Lippert的回答(第二个回答)对于类似的问题,对于您使用IDisposable原因很好解释。


如果你进一步阅读,有一个解释:

当垃圾收集器不再使用时,垃圾收集器会自动释放分配给管理对象的内存。 但是,无法预测垃圾收集何时发生。 此外,垃圾收集器不知道非托管资源,如窗口句柄或打开的文件和流。

垃圾收集器需要关心被管理的资源。 这就是他们被managed

另外,您示例中的连接资源不是托管资源。 .NET连接类包装非托管资源。


IDisposable.Dispose()负责两件事情:

  • 释放该对象可能拥有的非托管资源
  • Dispose()处理对象拥有的其他IDisposable
  • 链接地址: http://www.djcxy.com/p/54467.html

    上一篇: The primary use of IDisposable interface

    下一篇: When should I implement IDisposable?