美文网首页
C# IDispose接口标准用法

C# IDispose接口标准用法

作者: norman1981 | 来源:发表于2017-05-04 09:26 被阅读0次
    public class SampleClass : System.IDisposable
    {
        private bool alreadyDisposed=false;
        //供程序员显式调用的Dispose方法
        public void Dispose()
        {
            //调用带参数的Dispose方法, 释放托管和非托管资源
            Dispose(true);
            //手动调用了Dispose释放资源,那么析构函数就是不必要的了, 这里阻止GC调用析构函数
            System.GC.SuppressFinalize(this);
        }
    
        //protected的Dispose方法, 保证不会被外部调用。
        //传入bool值disposing以确定是否释放托管资源
        protected void Dispose(bool disposing)
        {
            if (alreadyDisposed) return; //保证不重复释放
    
            if (disposing)
            {
                ///TODO:在这里加入清理"托管资源"的代码, 应该是xxx.Dispose();
            }
            ///TODO:在这里加入清理"非托管资源"的代码
    
            alreadyDisposed=true;
        }
    
        //供GC调用的析构函数
        ~SampleClass ()
        {
            Dispose(false);//释放非托管资源
        }
    }
    

    相关文章

      网友评论

          本文标题:C# IDispose接口标准用法

          本文链接:https://www.haomeiwen.com/subject/codrtxtx.html