ASP.NET----析构方法

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

namespace NET.MST.Third.FinalizeDispose
{
public class FinalizeDisposeBase : IDisposable
{
// 标记对象是否已被释放
private bool _disposed = false ;

// Finalize方法:
~ FinalizeDisposeBase()
{
Dispose(
false );
}

// 这里实现了IDispose中的 Dispose方法
public void Dispose()
{
Dispose(
true );

// 告诉GC此对象的Finalize方法不再需要调用
GC.SuppressFinalize( true );
}

// 在这里做实际的析构工作
// 申明为虚方法以供子类在有必要时重写
protected virtual void Dispose( bool isDisposing)
{
// 当对象已经被析构时,不再执行
if (_disposed)
return ;
if (isDisposing)
{
// 在这里释放托管资源
// 只在用户调用Dispose方法时执行
}
// 在这里释放非托管资源

// 标记对象已被释放
_disposed = true ;
}
}

public sealed class FinalizeDispose : FinalizeDisposeBase
{
private bool _mydisposed = false ;

protected override void Dispose( bool isDisposing)
{
// Don't dispose more than once.
if (_mydisposed)
return ;
if (isDisposing)
{
// 在这里释放托管的并且在这个类型中申明的资源
}
// 在这里释放非托管的并且在这个类型中申明的资源

// 调用父类的Dispose方法来释放父类中的资源
base .Dispose(isDisposing);

// 设置子类的标记
_mydisposed = true ;
}

static void Main()
{
}
}
}

你可能感兴趣的:(asp.net)