捕获从未丢弃的IDisposables

时间:2011-03-07 17:32:52

标签: c# dispose

所以,作为一名新的.NET程序员,我认为垃圾收集器会一直为我清理我的烂摊子。

现在,一年半之后,当我不知道我必须在某些资源上调用dispose时,我编写的代码中存在内存异常。我猜这是因为该代码分配了许多不会被处理掉的位图...

我已经通过代码来清理它们,因为我知道的更好。但我总是想念一些。是否有工具或设置可以看到IDisposables没有被处置?

虽然我可以看到简单的情况很容易被编译器或工具捕获,但我也可以看到一些非常难以捕获的更复杂的场景。因此,如果没有我理解的工具,并将继续手工操​​作。

2 个答案:

答案 0 :(得分:5)

看看FxCop。 One of its rules会抓住实施IDisposable的项目,其中Dispose()未被调用。

答案 1 :(得分:1)

内存分析器将能够显示给定类的所有活动对象的位置 - 这可能是一个很好的起点。

现在有些内存分析器声称跟踪丢失的Dispose()调用, - 我不知道它们的工作情况。