本帖最后由 许庭洲 于 2012-11-20 22:50 编辑
可以通过自己添加的C#类来实现IDisposable接口,这些方法必须调用基类,否则,基类就不能正确地进行清理操作。
举例子:采用MyResourceHog类通过C#实现IDisposable接口
publicclassMyResourceHog:IDisposable
{
//已经被处理过的标记
privatebool_alreadyDisposed=false;
//终结器。调用虚拟的Dispose方法
~MyResourceHog()
{
Dispose(false);
}
//IDisposable的实现
//调用虚拟的Dispose方法。禁止Finalization(终结操作)
publicvoidDispose()
{
Dispose(true);
GC.SuppressFinalize(true);
}
//虚拟的Dispose方法
protectedvirtualvoidDispose(boolisDisposing)
{
//不要多次处理
if(_alreadyDisposed)
return;
if(isDisposing)
{
//TODO:此处释放受控资源
}
//TODO:此处释放非受控资源。设置被处理过标记
_alreadyDisposed=true;
}
} |