public class MyResourceHog : IDisposable 
  // 已经被处理过的标记 
  private bool _alreadyDisposed = false
  // 终结器。调用虚拟的Dispose方法 
  ~MyResourceHog() 
  { 
   Dispose( false ); 
  } 
 
  // IDisposable的实现 
  // 调用虚拟的Dispose方法。禁止Finalization(终结操作) 
  public void Dispose() 
  { 
   Dispose( true ); 
   GC.SuppressFinalize( true ); 
  } 
 
  // 虚拟的Dispose方法 
  protected virtual void Dispose( bool isDisposing ) 
  { 
   // 不要多次处理 
   if ( _alreadyDisposed ) 
    return
   if ( isDisposing ) 
   { 
    // TODO: 此处释放受控资源 
   } 
   // TODO: 此处释放非受控资源。设置被处理过标记 
   _alreadyDisposed = true
  } 
 
   如果衍生类需要执行另外的清除操作,它应该实现受保护的Dispose方法: 
 
public class DerivedResourceHog : MyResourceHog 
  // 它有自己的被处理过标记 
  private bool _disposed = false
 
  protected override void Dispose( bool isDisposing ) 
  { 
   // 不要多次处理 
   if ( _disposed ) 
    return
   if ( isDisposing ) 
   { 
    // TODO: 此处释放受控资源 
   } 
   // TODO: 此处释放所有受控资源 
 
   // 让基类释放自己的资源。基类负责调用GC.SuppressFinalize( ) 
   base.Dispose( isDisposing ); 
 
   // 设置衍生类的被处理过标记 
  _disposed = true
  } 

最新文章

  1. Objective-c快速入门
  2. AppBox升级进行时 - 关联表查询与更新(Entity Framework)
  3. Anaconda died after receiving signal 7
  4. 设计模式之美:Factory Method(工厂方法)
  5. Java保留两位小数的几种做法
  6. 用继承实现XYPoint和Circle两个类
  7. Remote Direct Memory Access (RDMA)
  8. 【jQueryMobile】Helloworld而页面切换
  9. hdu 1536 SG函数模板题
  10. Spring Boot 整合 elk
  11. PLSQL安装、PLSQL汉化、激活
  12. tensorboard基础使用
  13. CCF CSP 201809-2 买菜
  14. @RequestParam、@ReqeustBody、@ReponseBody认识
  15. 小程序获取当前页面URL
  16. 使用libcurl的正确姿势
  17. Tomcat Connector原理
  18. Sprint第二个计划
  19. 链表一元多项式计算器的实现(Java语言描述)
  20. React路由配置使用

热门文章

  1. 学SEO你其实只需要半个钟
  2. linux多种安装包格式的安装方法
  3. loj 1155(最大流)
  4. Servlet应用的运行流程
  5. Memcached GUI工具
  6. WPF/Silverlight Template使用及总结(转)
  7. eBay 消息发送(1)
  8. Codeforces 86C Genetic engineering(AC自动机+DP)
  9. BZOJ3012 : [Usaco2012 Dec]First!
  10. 【BZOJ】1085: [SCOI2005]骑士精神(A*启发式搜索)