Ich habe eine Anwendung, die Office-Interop-Baugruppen verwendet. Ich kenne den Runtime Callable Wrapper (RCW), der von der Runtime verwaltet wird. Aber ich bin mir nicht sicher, wie der Referenzzähler inkrementiert wird. MSDN sagt,RCW & Referenzzählung bei Verwendung von COM-Interop in C#
RCW nur eine Referenz auf das Objekt gewickelt COM hält unabhängig von der Anzahl der verwalteten Kunden nennen es.
Wenn ich es richtig verstanden habe, auf dem folgenden Beispiel
using Microsoft.Office.Interop.Word;
static void Foo(Application wrd)
{
/* .... */
}
static void Main(string[] args)
{
var wrd = new Application();
Foo(wrd);
/* .... */
}
Ich bin das Bestehen der Instanz wrd
an eine andere Methode. Dies erhöht jedoch nicht die interne Referenzzahl. Ich frage mich also, in welchen Szenarien die Referenzzählung inkrementiert wird. Kann jemand auf ein Szenario hinweisen, in dem der Referenzzähler erhöht wird?
Auch ich lese ein Blog, das sagt, vermeiden Sie doppelte Punkte beim Programmieren mit COM-Objekten. Etwas wie, wrd.ActiveDocument.ActiveWindow
. Der Autor behauptet, dass der Compiler separate Variablen erstellt, die die Werte enthalten, die den Referenzzähler inkrementieren. IMHO, das ist falsch und das erste Beispiel beweist dies. Ist das korrekt?
Jede Hilfe wäre großartig!
Marshall.AddRef & Marshall.Release für das COM-Objekt neue Referenzzähler zurück. Nicht sicher, wie genau es ist, aber zumindest können Sie den Anspruch des Autors überprüfen. – Arseny