A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 维纳斯之叶 中级黑马   /  2012-11-20 22:31  /  1689 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

都什么类实现了IDisposable接口??

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 许庭洲 于 2012-11-20 22:50 编辑

可以通过自己添加的C#类来实现IDisposable接口,这些方法必须调用基类,否则,基类就不能正确地进行清理操作。
举例子:采用MyResourceHog类通过C#实现IDisposable接口
   publicclassMyResourceHog:IDisposable  
   {  
    //已经被处理过的标记  
    privatebool_alreadyDisposed=false;  
    //终结器。调用虚拟的Dispose方法  
    ~MyResourceHog()  
    {  
         Dispose(false);  
    }  
   
   //IDisposable的实现  
   //调用虚拟的Dispose方法。禁止Finalization(终结操作)  
   publicvoidDispose()  
  {  
         Dispose(true);  
        GC.SuppressFinalize(true);  
  }  
  
//虚拟的Dispose方法  
  protectedvirtualvoidDispose(boolisDisposing)  
  {  
         //不要多次处理  
         if(_alreadyDisposed)  
         return;  
        if(isDisposing)  
       {  
            //TODO:此处释放受控资源  
       }  
       //TODO:此处释放非受控资源。设置被处理过标记  
      _alreadyDisposed=true;  
     }  
}

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
一些非托管资源,文件资源、网络资源、图片资源、数据库资源等,这些资源都是很费内存的,应该用完就立即释放,具体的可以看看MSDN,上面有详细的说明
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马