是否有一种工具可以扫描您的代码并确定哪些实现 IDisposable 的对象在编译时或运行时没有被释放到代码库中?
我在代码中有可能没有处理对象的区域,但是很难回头看看哪些对象首先需要这样做。
是否有一种工具可以扫描您的代码并确定哪些实现 IDisposable 的对象在编译时或运行时没有被释放到代码库中?
我在代码中有可能没有处理对象的区域,但是很难回头看看哪些对象首先需要这样做。
有很多静态分析工具,可以在这里提供帮助。
CodeRush/Refactor Pro 和 Resharper 都将在代码时在 Visual Studio 中向您显示未处理的对象。
FxCop,现在作为 Visual Studio 代码分析的一部分打包,可以为未处理的本地人和类成员生成编译时警告。
red-gate的ANTS 内存分析器将在运行时提供帮助。这是我最喜欢的工具之一。
当垃圾收集器最终清理不再使用的类时,将调用类的析构函数。您可以做的是检查已调用“Dispose”的析构函数。建议不要实际使用析构函数,但出于测试目的,它可能很有用。
此方法的唯一问题是您必须创建自己的类,该类继承自您需要测试 IDispose 的类并覆盖 Dispose 方法(因此您可以设置一个标志,说明它已被调用),初始化标志在构造函数中并在析构函数中检查它(您使用“~ClassName(){...}”实现)