Abfangen kontextübergreifender Aufrufe
Wenn ein Objekt in einem bestimmten Kontext aktiviert wird, werden nachfolgende Aufrufe von oder von ihm innerhalb des Kontexts anders behandelt als Aufrufe über die Kontextgrenze hinweg. Aufrufe über die Kontextgrenze hinweg werden mit einfachen Proxys verarbeitet. Diese Proxys übernehmen alle Vermittlungsvorgänge, die erforderlich sind, um die Laufzeitumgebung von einer Umgebung anzupassen, die den Aufrufer in eine Umgebung einnimmt, die den Angerufenen unternimmt. Dieser Prozess wird als Abfangen bezeichnet.
Kontextübergreifendes Abfangen von Aufrufen ist erforderlich, da Objekte in unterschiedlichen Kontexten unterschiedliche Laufzeitanforderungen haben – genau dies ist der Grund für Kontexte. COM+ fängt alle Objektverweise ab, die Sie als Methodenparameter übergeben, und konvertiert sie automatisch in Proxys, sodass sie im neuen Kontext verwendet werden können.
Wenn Sie Objektverweise über Kontextgrenzen hinweg auf andere Weise freigeben , z. B. in globalen Variablen, sollten Sie immer CoMarshalInterface und CoUnmarshalInterface verwenden. Diese Funktionen können einen Objektverweis in einen Proxy übersetzen, der in einem anderen Kontext verwendet werden kann. Geben Sie niemals einen Rohobjektverweis über Kontextgrenzen hinweg.
Das Kontextübergreifende Verhalten von Aufrufen kann unerwünschte Folgen haben, wenn Objekte Schnittstellen offenlegen, die nicht gemarst werden können. In diesem Fall sollten Sie wahrscheinlich darauf bestehen, dass das Objekt, das nicht gemarst werden kann, nur im Kontext des Aufrufers und niemals in seinem eigenen Kontext aktiviert wird. Sie können dies tun, indem Sie auf der Seite Eigenschaften der Komponente auf der Registerkarte Aktivierung die Option Muss im Kontext des Aufrufers aktiviert werden auswählen. (Schritt-für-Schritt-Anweisungen finden Sie unter Erzwingen der Aktivierung im Kontext des Aufrufers .)
Zugehörige Themen