Хостинг управляемого кода и сборка мусора

У меня есть C ++ внепроцессный COM-сервер, на котором размещено много кода C # для поддержки API, предоставляемого COM-объектами C ++.

По разным причинам я рассматриваю возможность исключения части моего решения на C ++. Однако из-за ограничений вне моего контроля яиметь сохранить внепроцессный COM-сервер. У Microsoft есть канонический пример этогоВот.

Глядя на этот пример, я кое-что не понимаю. Перед началом цикла сообщений создается таймер для вызова GC.Collect каждые 5 секунд. Единственное упоминание об этом, которое я могу найти, указывает на то, что это гарантирует, что COM-объекты будут выпущены в разумные сроки. Я немного запутался по этому поводу ... мой C ++ хост в настоящее время вызывает GC.Collect автоматически? Я конечно не делаю этого. И все же я создаю управляемые объекты (с COMVisible (true) как COM-объекты в коде C ++. Означает ли это, что я должен вызывать GC.Collect сейчас каждые 5 секунд? Если нет, зачем мне его вызывать в этом новом C #) вне сервера процессов. Это для того, чтобы компенсировать автоматический процесс, который очищает COM-объекты, на которые нет ссылок, в обычном приложении C ++ (что, как я полагаю, происходит во время цикла сообщений).

Вызов GC.Collect каждые 5 секунд кажется плохой идеей. Я ошибаюсь, чтобы беспокоиться? Есть ли какой-то другой метод, с помощью которого я мог бы достичь таких же результатов?

Я использую .NET 4.5 и Visual Studio 2012.

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

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