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
        }
  • 相关阅读:
    uva 11488
    探测器-旅行者1号:百科
    理论-生命起源理论:百科
    定律:目录
    定律:百科
    理论:目录
    理论(哲学):百科
    理论:百科
    汉语-词语:潮汐
    物理-电磁-电磁相互作用:百科
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/10298393.html
Copyright © 2011-2022 走看看