WEB开发网
开发学院软件开发C语言 C#.Net中的非托管代码清理 阅读

C#.Net中的非托管代码清理

 2009-04-04 08:22:51 来源:WEB开发网   
核心提示: public class MyResourceRelease: IDisposable { /// 保证资源只用释放一次 private bool _alreadyDisposed = false; /

public class MyResourceRelease: IDisposable
{
/// 保证资源只用释放一次
private bool _alreadyDisposed = false;
/// 用来判断释放资源的类别(托管和非托管)
protected virtual void Dispose(bool isDisposing)
{
if(_alreadyDisposed)
{
return;
}
if(isDisposing)
{
//释放托管资源
}
//释放非托管资源
_alreadyDisposed = true;
}
public void Dispose()
{
Dispose(true);
}
}

上面的代码就是用Dispose方式释放资源的方法.因为上面自定义的Dispose(bool isDisposing)方法是virtual的,所以还可以在派生类里面对它进行override

public class MyDerivedResource: MyResourceRelease
{
private bool _disposed = false;
protected override void Dispose(bool isDisposing)
{
if(_disposed)
{
return;
}
try
{
if(isDisposing)
{
//释放托管资源
}
//释放非托管资源
_disposed = true;
}
finally
{
base.Dispose(isDisposing);
}
}
}

上一页  1 2 3 4  下一页

Tags:Net 托管 代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接