问题描述
下面是C#类的典型IDisposable实现,它同时具有托管和非托管资源。我的问题是,对于任何给定的对象,在某种情况下,是否存在〜DisposableObject()析构函数方法被调用之前的情况?并且如果可能的话,将不会将处置标志设置为false,并且如果将处置标志设置为false,则由于Dispose(bool)方法不会执行任何操作,因此托管资源将永远不会被处置。
public class DisposableObject : IDisposable
{
private bool disposed;
private ManagedResource mgdRs;
private UnmanagedResource unMgdRs;
public DisposableObject()
{
mgdRs = new ManagedResource();
unMgdRs = new UnmanagedResource();
}
~DisposableObject()
{
this.Dispose(false);
}
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
// clean up managed resources
//call dispose on your member objects
mgdRs.Dispose();
}
// clean up unmanaged resources
unMgdRs.Destroy();
this.disposed = true;
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)