У меня есть приложение, которое использует сборки Interop для 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
. Автор утверждает, что компилятор создает отдельные переменные для хранения значений, которые будут увеличивать счетчик ссылок. ИМХО, это неправильно, и первый пример доказывает это. Это правильно?
Любая помощь будет замечательной!