C # + COM Interop, детерминированный релиз

COM-объекты обычно имеют детерминированное разрушение: они освобождаются, когда освобождается последняя ссылка.

Как это обрабатывается в C # - COM Interop? Классы не реализуютIDisposable, так что я не вижу способа вызвать явный IUnknown :: Release.

Случайный тест показывает, что несвязанные COM-объекты собираются лениво (то есть сборщик мусора запускает выпуск). Что я должен сделать для объектов OCM, которые должны быть освобождены агрессивно? (например, проведение крупных или общих критических ресурсов)?

Исходная проблема: у нас есть приложение на C #, интенсивно использующее библиотеку COM, и оно протекает как сумасшедший. Кажется, что проблема заключается в «между» кодом C ++ и C # (у нас есть доступ к обоим), но мы не можем его зафиксировать.

Ответы на вопрос(3)

Ваш ответ на вопрос