当前位置:  开发笔记 > 编程语言 > 正文

如何判断是否配置了IDisposable对象引用?

如何解决《如何判断是否配置了IDisposable对象引用?》经验,为你挑选了4个好方法。

是否有方法或其他轻量级方法来检查引用是否属于被处置对象?

PS - 这只是一种好奇心(睡得好,不在生产代码中).是的,我知道我可以ObjectDisposedException试图访问该对象的成员.



1> Dandikas..:

否 - IDisposable模式的默认实现不支持它



2> Ryan Lundy..:

System.Windows.Forms.Control有一个IsDisposed属性,在Dispose()被调用后设置为true.在您自己的IDisposable对象中,您可以轻松创建类似的属性.


@ krillgar,OP的问题中没有任何内容可以支持您的主张。

3> Scott Dorman..:

内置任何东西都不会允许这样做.您需要公开反映内部置位标志的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);
    }
}



4> jop..:

如果它不是你的类并且它没有提供IsDisposed属性(或类似的东西 - 名称只是一个约定),那么你无法知道.

但是如果它是你的类并且你遵循规范的IDisposable实现,那么只需将_disposed或_isDisposed字段作为属性公开并检查它.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有