我已经遇到了一些问题,使用Visual Studio 2010的单元测试框架。目前,QTAgent32将在测试执行完成后保持对DLL的引用。QTAgent32.exe保留执行后打开的DLL句柄
有问题的DLL是围绕某些本机C++代码的C++/cli包装。由包装器公开的对象实际上从未被托管代码分配。唯一的参考是在处理过程中进行最后的检查,看看它是否在班级生命期间被设置。
If(_obj != null)
{
_obj.Dispose();
_obj = null;
}
我知道这是事实,因为如果我通过代码并观察调试器控制台输出,我可以看到该DLL的符号不加载,直到击中如果(这是有道理的)。涉及的所有托管对象都实现了IDisposable,以确保所有本地对象都被注意避免内存泄漏。
基于这个问题:QTAgent32 Holding File Open我确保没有文件流被明确地打开(包括控制台),甚至没有文件被使用,但问题仍然存在。我正在想什么做什么。
任何人都可以帮忙吗?
TL; DR: QTAgent32.exe保留对从未实例化的C++/cli包装的开放引用。
预构建的想法其实非常好。我可能不得不从现在开始使用它。谢谢。 – JMcCarty 2012-01-13 15:05:22
在下面一行中添加'exit 0'以避免qtagent32未运行时出现错误。 – Christian 2012-05-22 10:15:35
@Christian没有帮助,当qtagent32没有运行时,即使使用'exit 0'也会出错。有什么帮助,而是使用这个命令:'启动taskkill/f/im QTAgent32.exe' – theV0ID 2014-01-07 16:32:32