码迷,mamicode.com
首页 > 其他好文 > 详细

Class 实现IDisposing方法

时间:2015-07-12 14:10:09      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:

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
  } 

Class 实现IDisposing方法

标签:

原文地址:http://www.cnblogs.com/jinhaoObject/p/4640840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!