Class 实现IDisposing方法

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)