Я использую сторонние объекты C++ COM, которые, как представляется, содержат несколько статических элементов. Дело в том, что я должен перезапускать статические элементы каждый раз, когда начинаю новый прогон. Поэтому мне сейчас нужно закрыть и открыть приложение. Я попытался использовать AppDomain для разгрузки всей памяти этих статических членов, но я понятия не имею, почему это не сработает. Я растеризовать COM-объект, используя Activator.CreateInstance(Type.GetTypeByCLSID)
, есть ли что-нибудь, что мне нужно сделать вручную, чтобы уничтожить эти экземпляры? обратите внимание, что я проверил, и любые статические объекты C# распоряжаются этим способом.Разгрузка appdomain не очищает C++ COM-объект статические члены
0
A
ответ
2
неуправляемые ресурсы называются неуправляемого потому, что их память не обрабатывается удалось сборщика мусора.
Любой неуправляемый ресурс должен быть вручную удален. Это одна из целей (если не самая важная) IDisposable
: ее реализации имеют некоторый связанный неуправляемый ресурс. Например, FileStream
необходимо удалить вручную, поскольку это оболочка вызовов Win32 API.
Таким образом, выгрузка AppDomain
или любого другого подхода здесь не поможет. Те, кому нужно кодировать, чтобы избавляться от этих статических ресурсов COM, когда вам они больше не нужны (i.e при закрытии приложения).
Смежные вопросы
- 1. Загрузка/разгрузка сборки в разных AppDomain
- 2. C++ Статические Struct Тип члены
- 3. Статические функции-члены в C++
- 4. C++ частные статические переменные-члены
- 5. Non статические члены в C++
- 6. Статические члены класса в C++
- 7. Почему можно инициализировать не константные и статические константы-члены-члены, но не статические переменные-члены?
- 8. Загрузка и разгрузка сборки в собственном AppDomain
- 9. Разгрузка IIS AppDomain в среде Azure
- 10. Статические поля в AppDomain
- 11. статические члены Повсеместно статические методы
- 12. System.WIndows.Application статические члены потокобезопасны?
- 13. Когда статические члены класса C++ инициализируются?
- 14. Статические члены класса экземпляра
- 15. Статические члены вводят объекты?
- 16. Статические члены python
- 17. статические члены и consts
- 18. Собственное наследование C++ и статические члены/типы
- 19. Статические члены и ошибки LNK в C++
- 20. статические члены Си ++
- 21. статические изменяемые переменные-члены в C++?
- 22. Objective C - статические члены и постоянные
- 23. Что касается C# Статические члены Readonly
- 24. C++ Статические члены класса инициализируются после конструктора
- 25. класс шаблона: статические члены не наследуется
- 26. Статические члены в VB.NET
- 27. Выводя статические члены
- 28. Объяснение Статические члены
- 29. Защищенные статические переменные-члены
- 30. Статические члены и шаблоны в C++
Как я могу закрыть статический ресурс объекта COM, не убивая приложение? будет ли 'Marshal.ReleaseComObject' выполнять эту работу? –
@maordavid На самом деле я не эксперт по interop, поэтому у меня нет четкого ответа на этот другой вопрос. BTW, вы можете быть уверены, что любой неуправляемый ресурс должен быть вручную удален вами в вашем коде приложения ... –
@maordavid Также вполне возможно, что эти сторонние COM-компоненты были неправильно реализованы ... они должны обеспечить некоторый способ повторной инициализации их незарегистрированные ресурсы или кто знает, что ... –