IDisposable接口的使用

原创 2006年06月05日 14:23:00

按照MSDN的定义,IDisposable接口是用作释放非托管资源的,但初看它的实例代码,给人一种IDisposable是用来释放托管资源的方法。

事实上,IDisposable接口的使用规则如下:

1.如果对象实现了IDisposable接口及其dispose方法,那么托管资源和非托管资源都由dispose来释放,最后不会调用析构函数。

2.如果dispose方法没有被调用,那么CLR就会调用析构函数,释放非托管资源。

以下就是实现IDisposable接口后对象调用的流程图:

问题释疑:

1、IDisposable接口为.net程序提供了资源(托管和非托管)释放的便利工具,加入对象调用程序不显示调用dispose方法,那么托管资源就不会被释放,从而会引发内存泄漏等问题。

2、采用dispose释放托管资源后,并不意味着对象它的生存周期已结束,你仍可以在其他地方引用它,这是于c++程序不同的地方。

.NET中IDisposable接口的基本使用

首先来看MSDN中关于这个接口的说明: [ComVisible(true)] public interface IDisposable { // Methods void Dispo...

NET中IDisposable接口的基本使用

首先来看MSDN中关于这个接口的说明: [ComVisible(true)] public interface IDisposable { // Methods void Dispo...

正确实现 IDisposable接口

正确实现 IDisposable   .NET中用于释放对象资源的接口是IDisposable,但是这个接口的实现还是比较有讲究的,此外还有Finalize和Close两个函数。 MSDN建议按...
  • fxqcn
  • fxqcn
  • 2011年08月24日 15:23
  • 635

对IDisposable接口的理解

本人最近接触一个项目,在这个项目里面看到很多类实现了IDisposable接口.在我以前的项目中都很少用过这个接口,只知道它是用来手动释放资源的.这么多地方用应该有它的好处,为此自己想对它有进一步的了...

类实现接口:IDisposable:防止内存溢出

一:什么是资源在开始本文前,需要一些准备知识。首先要提出“什么是资源”。在CLR出来之后,Windows系统资源开始分为“非托管资源”和“托管资源”。         非托管资源是指:所有的Windo...
  • wyqlxy
  • wyqlxy
  • 2011年01月29日 10:10
  • 1575

利用C#实现IDisposable接口是一种标准的途径

首先,感谢你的阅读,本人观点:学习编程是个漫长的过程并不是一时就会很厉害的,关键是坚持,快乐地学习,在这里分享我的一些笔记给你;   我们已经知道了处置那些占用非受控(unmanaged)资源的对象...

9.3.2 用 IDisposable 接口清理资源

9.3.2 用 IDisposable 接口清理资源   我们已经使用过几种实现了 IDisposable 接口的类型,比如,Graphics 和 SolidBrush。我们想使代码尽可能易于理解...
  • hadstj
  • hadstj
  • 2014年12月11日 15:02
  • 468

C#中IDisposable接口实现

在Net中,由GC垃圾回收线程掌握对象资源的释放,程序员无法掌控析构函数的调用时机。对于一些非托管资源,比如数据库链接对象等,需要实现IDisposable接口进行手动的垃圾回收。那么什么时候使用Id...
  • Wake34
  • Wake34
  • 2016年09月02日 09:04
  • 107

建议46:显式释放资源需继承接口IDisposable

建议46:显式释放资源需继承接口IDisposable C#中的每一个类型都代表一种资源,资源分为两类: 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象。 非托...
  • houwc
  • houwc
  • 2016年09月06日 17:41
  • 237

IDisposable 接口

虽然 .net 有垃圾回收机制(GC), 可自动进行大部分的资源清理工作,但开发人员仍旧应该养成良好的通过手动调用资源清理方法来进行资源回收的习惯, 让对象实现 IDisposable 接口正是 M$...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IDisposable接口的使用
举报原因:
原因补充:

(最多只允许输入30个字)