На сегодняшний день, как правильно работать с COM-объектами?

Это очень распространенный вопрос, и я решил задать его, потому что на этот вопрос сегодня может быть другой ответ. Надеемся, ответы помогут понять, как правильно работать с COM-объектами. Лично я чувствую себя очень смущенным после получения различных мнений по этому вопросу.

Последние 5 лет я работал с COM-объектами, и для меня правила были очень ясны:

Используйте один период в строках кода. Используя более одного периода, создайте временные объекты за сценой, которые не могут быть явно освобождены.Не используйте foreach, используйте цикл for и освобождайте каждый элемент на каждой итерацииНе вызывайте FInalReleaseComObject, вместо этого используйте ReleaseComObject.Не используйте GC для освобождения объектов COM. GC намерение в основном для отладки использования.Выпускать объекты в обратном порядке их создания.

Некоторые из вас могут быть разочарованы после прочтения этих последних строк, это то, что я знал о том, как правильно создавать / выпускать Com Object, я надеюсь получить ответы, которые сделают его более понятным и неоспоримым.

Ниже приведены ссылки, которые я нашел по этой теме. Некоторые из них говорят, что необходимо вызвать ReleaseComObject, а некоторые нет.

Как правильно выпустить Excel COM объекты (Ноябрь 2013 г.)Правильный способ освобождения COM-объектов в .NET (Август 2011 г.)Marshal.ReleaseComObject считается опасным (Март 2010 г.)ReleaseCOMObject (Апрель 2004 г.)

«... В сценариях VSTO вам обычно не нужно использовать ReleaseCOMObject. ...»

MSDN -Метод Marshal.ReleaseComObject (текущая версия .NET Framework):

«... Вы должны использовать этот метод для освобождения базового COM-объекта, который содержит ссылки ...»

ОБНОВИТЬ:

Этот вопрос был помечен как слишком широкий. По запросу я постараюсь упростить и задать более простые вопросы.

Требуется ли ReleaseComObject при работе с COM-объектами или правильный способ вызова GC?Меняет ли подход VSTO способ, которым мы привыкли работать с COM-объектами?Какие из приведенных выше правил являются обязательными, а какие нет? Есть ли другие?

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

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