我使用Visual Studio 2010的单元测试框架遇到了一些问题。目前,QTAgent32将在测试执行完成后维护对DLL的引用。
有问题的DLL是围绕一些本机c ++代码的c ++ / cli包装器。包装器公开的对象实际上从未由托管代码分配。它唯一的参考是在处理期间进行最后检查,以确定它是否在课程的生命周期中设置。
If(_obj != null)
{
_obj.Dispose();
_obj = null;
}
我知道这是事实,因为如果我单步执行代码并观察调试器控制台输出,我可以看到DLL的符号没有加载,直到命中if(这是有意义的)。涉及的所有托管对象都实现了IDisposable,以确保所有本机对象都得到谨慎以避免内存泄漏。
基于这个问题: QTAgent32保持文件打开 我确保没有明确打开文件流(包括控制台),甚至没有使用任何文件,但问题仍然存在。我的想法已经不多了。
有人可以帮忙吗?
TL; DR: QTAgent32.exe保持对从未实例化的c ++ / cli包装器的开放引用。