COM-объекты обычно имеют детерминированное разрушение: они освобождаются при освобождении последней ссылки.C# + COM Interop, детерминированный релиз
Как это обрабатывается в C# - COM Interop? Классы не реализуют IDisposable
, поэтому я не вижу возможности запуска явного IUnknown :: Release.
Случайный тест показывает, что объекты с непринятыми COM-объектами собираются лениво (т. Е. Сборщик мусора запускает выпуск). Что мне делать для объектов OCM, которые должны быть выпущены агрессивно? (например, проведение больших или общих критических ресурсов)?
Оригинальная проблема: у нас есть приложение C#, сильно использующее библиотеку COM, и оно протекает как безумный. Кажется, что проблемы «между» C++ и C# -кодом (у нас есть доступ к обоим), но мы не можем прибить его.
+1, потому что это спасло мою жизнь более чем один раз. – OregonGhost