我已經遇到了一些問題,使用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