Esempio n. 1
0
        /// <summary>
        /// 重写父类的Dispose方法
        /// </summary>
        /// <param name="disposing"></param>
        protected override void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                // 清理子类托管资源
                if (derivedManagedResource != null)
                {
                    derivedManagedResource.Dispose();
                    derivedManagedResource = null;
                }
            }

            // 清理子类非托管资源
            if (derivedNativeResource != IntPtr.Zero)
            {
                Marshal.FreeHGlobal(derivedNativeResource);
                derivedNativeResource = IntPtr.Zero;
            }

            // 调用父类的清理代码
            base.Dispose(disposing);

            //让类型知道自己已经被释放
            disposed = true;
        }
Esempio n. 2
0
        /// <summary>
        /// 非密封类修饰用protected virtual
        /// 密封类修饰用private
        /// 之所以提供这样一个受保护的虚方法,是因为考虑了这个类型会被其他类型继承的情况。
        /// 如果类型存在一个子类,子类也许会实现自己的Dispose模式。受保护的虚方法用来提醒子类:必须在自己的清理方法时注意到父类的清理工作,即子类需要在自己的释放方法中调用base.Dispose方法
        /// </summary>
        /// <param name="disposing"></param>
        protected virtual void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                // 清理托管资源
                if (managedResource != null)
                {
                    managedResource.Dispose();
                    managedResource = null;
                }
            }

            // 清理非托管资源
            if (nativeResource != IntPtr.Zero)
            {
                // 演示清理非托管资源代码
                Marshal.FreeHGlobal(nativeResource);
                nativeResource = IntPtr.Zero;
            }

            // 让类型知道自己已经被释放
            disposed = true;
        }
Esempio n. 3
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposed)
     {
         return;
     }
     if (disposing)
     {
         // 清理托管资源
         if (managedResource != null)
         {
             managedResource.Dispose();
             managedResource = null;
         }
     }
     disposed = true;
 }