Я использую сторонние C ++ COM-объекты, которые, кажется, содержат несколько статических членов. Дело в том, что я должен сбрасывать статические элементы каждый раз, когда начинаю новый прогон. Поэтому мне нужно закрыть и открыть свое приложение. Я пытался использовать AppDomain для выгрузки всей памяти этих статических членов, но я понятия не имею, почему это не сработает. Я снимаю COM-объект, используя Activator.CreateInstance(Type.GetTypeByCLSID)
Есть ли что-нибудь, что мне нужно сделать вручную, чтобы избавиться от этих экземпляров? обратите внимание, что я проверил, и любые статические объекты C # располагают таким образом.
Неуправляемые ресурсы называются неуправляемый потому что их память не обрабатывается управляемый сборщик мусора.
Любой неуправляемый ресурс должен быть удален вручную. Это одна из целей (если не самая важная) IDisposable
: его реализации имеют некоторый связанный неуправляемый ресурс. Например, FileStream
должен быть удален вручную, потому что это оболочка вызовов Win32 API.
В итоге выгрузка AppDomain
или любой другой подход не поможет здесь. Вы тот, кому нужно написать код для утилизации этих статических COM-ресурсов, когда они вам больше не нужны (т.е. когда вы закрываете приложение).
Других решений пока нет …