У меня есть приложение, использующее сборки взаимодействия Office. Мне известно о "Runtime Callable Wrapper (RCW)", управляемом средой выполнения. Но я не очень уверен, как увеличивается счетчик ссылок. MSDN говорит:
RCW сохраняет только одну ссылку на завернутый COM-объект независимо от количества вызывающих его управляемых клиентов.
Если я правильно понимаю, на следующем примере
using Microsoft.Office.Interop.Word;
static void Foo(Application wrd)
{
/* .... */
}
static void Main(string[] args)
{
var wrd = new Application();
Foo(wrd);
/* .... */
}
Я передаю экземпляр wrd
другому методу. Но это не увеличивает счетчик внутренних ссылок. Итак, мне интересно, в каких сценариях счетчик ссылок увеличивается? Может ли кто-нибудь указать сценарий, при котором счетчик ссылок увеличивается?
Также я читал блог, в котором говорится, что при программировании с COM-объектами не следует использовать двойные точки. Что-то вроде wrd.ActiveDocument.ActiveWindow
. Автор утверждает, что компилятор создает отдельные переменные для хранения значений, которые увеличивают счетчик ссылок. ИМХО, это неправильно и первый пример это доказывает. Это правильно?
Любая помощь была бы замечательной!