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