zoukankan      html  css  js  c++  java
  • IDisposeable 最佳实现

        public class MyClass : IDisposable
        {
            #region 变量声明
            // 指向外部非托管资源
            private IntPtr handle;
            // 此类使用的其它托管资源.
            private Component Components;
            // 跟踪是否调用.Dispose方法,标识位,控制垃圾收集器的行为
            private bool isDisposed = false; 
            #endregion
    
            #region Finalizer
            ~MyClass()
            {
                Dispose(false);
            }
            #endregion
    
            #region IDispseable 接口实现
            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }
            #endregion
    
            #region 释放方法
            /// <summary>
            /// 释放非托管资源
            /// </summary>
            /// <param name="isManual">手动调用为true,系统调用为flase</param>
            protected virtual void Dispose(bool isManual)
            {
                if (isDisposed) return; isDisposed = true;
                
                //释放非托管资源
                handle = IntPtr.Zero;
    
                if (isManual)
                {
                    //释放其他disose对象
                    Components?.Dispose();
                }
    
            } 
            #endregion
        }
  • 相关阅读:
    django上传下载大文件
    ssh隧道技术
    防止网站被抓
    lvm在线扩容
    Python之配置文件模块 ConfigParser
    Oracle常用查询
    Oracle_where子句
    Oracle_单行函数
    Oracle_多行函数
    Oracle_SQL92_连接查询
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/10298393.html
Copyright © 2011-2022 走看看