zoukankan      html  css  js  c++  java
  • 自定义类实现IDisposable接口

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace finalize
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                MyResource myone 
    = new MyResource();
                
                
    try 
                {
                                        
    //do something
                }
                
    finally
                {
                    myone.Dispose();
                    myone.Close();     
    //因为已经释放所以不执行动作
                    myone.Close();
                }
                
    using (MyResource mytwo = new MyResource())
                {
                                       
    //do something
                }
                Console.Read();
            }
        }
        
    public class MyResource : IDisposable
        {
            
    private bool IsDisposed;  //判断类是否被释放
            public void Dispose()
            {
                Dispose(
    true);       //调用Dispose(true)释放该类所引用对象的Dispose方法和类本身使用的非托管资源;
            }
            
    public void Close()
            {
                Dispose(
    true);
            }
            
    public void Dispose(bool disposing)
            {
                
    if (!this.IsDisposed)
                {
                    
    if (disposing)
                        Console.WriteLine(
    "此处释放该类所引用对象的Dispose方法");
                    Console.WriteLine(
    "此处释放类本身使用的非托管资源");
                    
    this.IsDisposed = true;
                    
    if (disposing)  
                        GC.SuppressFinalize(
    this);  //阻止终结器的调用
                }
            }
            
    ~MyResource()
            {
                Dispose(
    false);                    //析构函数释放非托管资源调用Dispose(false);
            }
        }
    }
  • 相关阅读:
    针对web高并发量的处理
    外边距合并,外边距折叠
    cookie 和session 的区别:
    ng-if ng-show ng-hide 的区别
    JavaScript中的arguments,callee,caller
    git常见命令
    jQuery中.bind() .live() .delegate() .on()的区别
    为什么要使用sass
    js兼容性记录
    poj1004
  • 原文地址:https://www.cnblogs.com/kakaliush/p/1899738.html
Copyright © 2011-2022 走看看