自定义类实现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);
        }
    }
}
原文地址:https://www.cnblogs.com/kakaliush/p/1899738.html