您好,
我指的是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);
}
}
我的想法是否正确?
答案 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