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
        }
  • 相关阅读:
    Outlook 邮件助手
    飞花令
    青蛙跳台阶
    如何提问,找到去说谎国的路
    如何计时一个小时十五分钟
    旋转数组的最小元素
    谁养鱼?
    小龙赚了多少?
    下一行是什么?
    5 = ?
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/10298393.html
Copyright © 2011-2022 走看看