首页 > 其他 > 详细

Class 实现IDisposing方法

时间:2015-07-12 14:09:00      阅读:213      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!