Nei*_*ski 82 .net c# dispose idisposable
是否有方法或其他轻量级方法来检查引用是否属于被处置对象?
PS - 这只是一种好奇心(睡得好,不在生产代码中).是的,我知道我可以ObjectDisposedException试图访问该对象的成员.
Rya*_*ndy 40
System.Windows.Forms.Control有一个IsDisposed属性,在Dispose()被调用后设置为true.在您自己的IDisposable对象中,您可以轻松创建类似的属性.
Sco*_*man 18
内置任何东西都不会允许这样做.您需要公开反映内部置位标志的IsDisposed布尔属性.
public class SimpleCleanup : IDisposable
{
private bool disposed = false;
public bool IsDisposed
{
get
{
return disposed;
}
}
public SimpleCleanup()
{
this.handle = /*...*/;
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// free only managed resources here
}
// free unmanaged resources here
disposed = true;
}
}
public void Dispose()
{
Dispose(true);
}
}
Run Code Online (Sandbox Code Playgroud)
如果它不是你的类并且它没有提供IsDisposed属性(或类似的东西 - 名称只是一个约定),那么你无法知道.
但是如果它是你的类并且你遵循规范的IDisposable实现,那么只需将_disposed或_isDisposed字段作为属性公开并检查它.
| 归档时间: |
|
| 查看次数: |
41307 次 |
| 最近记录: |