• 自定义类实现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);
            }
        }
    }
  • 相关阅读:
    事务1-JDBC事务管理
    Tomcat地址栏传中文参数乱码问题处理
    hibernate报错:org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
    UVA12170 Easy Climb
    [POI2004]旅行问题
    [SCOI2010]股票交易
    [USACO11OPEN] Mowing the Lawn G
    查看文件个数 ls |wc -l
    【zombie】如何查看并杀死僵尸进程?
    [Windows] 屏幕截图
  • 原文地址:https://www.cnblogs.com/kakaliush/p/1899738.html
Copyright © 2020-2023  润新知