IDisposable
public class TypeDisposable: IDisposable
{
/**/
/// <summary>
/// 该对象是否已被销毁过
/// </summary>
private bool disposed;
/**/
/// <summary>
/// 这就是传说中的 Finalize函数,是不是和C++的析构函数很像?
/// </summary>
~TypeDisposable()
{
Console.WriteLine("对象被销毁");
Dispose(false);
Console.ReadLine();
}
public void Dispose()
{
Console.WriteLine("手动销毁对象");
Dispose(true);
//通知GC, 偶已经被销毁过了,可以不用在管偶了。。。
GC.SuppressFinalize(this);
}
/**/
/// <summary>
/// Dispose
/// </summary>
/// <param name="disposing">是否由程序直接调用</param>
protected void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
//该函数为手动调用,此处可进行托管资源的清理
//比如此类中有一个类型为 DataSet 的变量 dsData
//此处可调用该对象的 Dispose 方法来清理托管资源
}
//进行非管资源的清理
//该类资源 GC 是无法管理的,只能依靠程序员自已释放
//不同的资源, 释放方法不一样
}
disposed = true;
Console.ReadLine();
}
}