У меня возникла проблема с использованием среды Visual Studio 2010 unit test. В настоящее время QTAgent32 будет поддерживать ссылку на DLL после завершения теста.
Рассматриваемая DLL - это оболочка С++/cli вокруг некоторого кода С++. Объект, открытый оболочкой, на самом деле никогда не назначается управляемым кодом. Единственная ссылка, которую он делает, - это окончательная проверка во время удаления, чтобы убедиться, что она была установлена во время жизни класса.
If(_obj != null)
{
_obj.Dispose();
_obj = null;
}
Я знаю это по факту, так как, если я пройду через код и посмотрю вывод консоли отладчика, я вижу, что символы для DLL не загружаются до тех пор, пока не произойдет нажатие if (что имеет смысл). Все управляемые объекты включают в себя IDisposable, чтобы убедиться, что все собственные объекты позаботились о том, чтобы избежать утечек памяти.
Основываясь на этом вопросе: QTAgent32 Holding File Open, я убедился, что никаких открытых потоков не было открыто (включая консоль), и файлы еще не используются, но проблема остается. У меня заканчиваются идеи о том, что делать.
Может ли кто-нибудь помочь?
TL; DR: QTAgent32.exe сохраняет открытую ссылку на оболочку С++/cli, которая никогда не создается.