我认为IDisposable示例存在问题

时间:2010-07-19 11:50:49

标签: c# .net idisposable

  

可能重复:
  Am I implementing IDisposable correctly?

您好,

我指的是post来检查IDisposable的使用情况。

我在Dispose方法中看到了一个问题。在代码中“disposed”仅用于

private void Dispose(bool disposing) 

方法。

我相信它应该在调用“Dipose”方法之前使用,正确的实现将是

public void Dispose()
        {
            if(!disposed )
            {
            Dispose(true);
            // This object will be cleaned up by the Dispose method.
            // Therefore, you should call GC.SupressFinalize to
            // take this object off the finalization queue
            // and prevent finalization code for this object
            // from executing a second time.
            GC.SuppressFinalize(this);
            }
        }

我的想法是否正确?

2 个答案:

答案 0 :(得分:1)

鉴于Dispose(disposing)的实施无论如何都会检查disposed标志,为什么还要在Dispose()方法中执行此操作?

唯一的缺点是,如果你多次拨打GC.SuppressFinalize,可以多次调用Dispose() - 但就我所知,这是无害的。

答案 1 :(得分:1)

不要忘记清除任何非托管资源。 Microsoft在此处提供示例代码:

“正确实施IDisposable” http://msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx

-Krip