zoukankan      html  css  js  c++  java
  • 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
      } 
  • 相关阅读:
    Docker 实战(2)- 在 Jenkins 容器上的搭建持续集成环境和完成自动化测试
    Docker
    Jenkins(9)- 汉化 Jenkins 网站
    Docker 实战(1)- 使用 Jenkins 镜像创建容器,并搭建 Python + Pytest +Allure 的自动化测试环境
    Python
    Docker
    Linux
    Docker(20)- docker rmi 命令详解
    Docker(19)- docker pause/unpause 命令详解
    Docker(18)- docker kill 命令详解
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4640840.html
Copyright © 2011-2022 走看看