COM Callable Wrapper и.NET время жизни объекта
У меня есть сборка aC# .NET, которая вызывается из C++ COM-клиента. Когда клиентский процесс явно освобождает COM-объект, CCW освобождает его внутреннюю ссылку, что делает объект.NET подходящим для сборки мусора.
Что если объект.NET имеет статический конструктор, который открывает файл журнала? Есть ли элегантное решение закрыть файл журнала без явного запроса от клиента?
ТИА.
2 ответа
После некоторого тестирования с использованием AppDomain.ProcessExit EventHandler кажется хорошим выбором, чтобы закрыть файл журнала.
Если вы не хотите модифицировать COM-клиент, вам не повезет в любой определенной магии закрытия. В конечном итоге дескриптор файла будет закрыт в будущем (при условии, что это FileStream), когда финализатор дескриптора будет вызван GC после того, как ваш CCW потеряет свои корни GC.
-Oisin