目的:释放非托管资源
public class ResourceHolder: IDisposable
{
private bool _isDisposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this); //通知GC这个类不需要再调用其析构函数
}
protected virtual void Dispose(bool disposing)
{
if(!_isDisposed)
{
if(disposing)
{
//Cleanup managed objects by using their Dispose() methods.
}
//Cleanup unmanaged objects
}
_isDisposed = true;
}
~ResourceHolder()
{
Dispose(false);
}
public void SomeMethod()
{
if(_isDisposed)
{
throw new ObjectDisposedException("ResourceHolder")
}
//method implementation...
}
}