War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
ReleaseComObject-Methode
Collapse the table of content
Expand the table of content
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Marshal.ReleaseComObject-Methode

Dekrementiert den Verweiszähler des dem angegebenen COM-Objekt zugeordneten angegebenen Runtime Callable Wrapper (RCW) (RCW).

Namespace:  System.Runtime.InteropServices
Assemblys:   mscorlib (in mscorlib.dll)
  System.Runtime.InteropServices (in System.Runtime.InteropServices.dll)

public static int ReleaseComObject(
	Object o
)

Parameter

o
Typ: System.Object
Das freizugebende COM-Objekt.

Rückgabewert

Typ: System.Int32
Der neue Wert für den Verweiszähler des RCW, der o zugeordnet ist. Dieser Wert ist in der Regel 0, da der RCW unabhängig von der Anzahl der aufrufenden verwalteten Clients genau einen Verweis auf das umschlossene COM-Objekt beibehält.

AusnahmeBedingung
ArgumentException

o ist kein gültiges COM-Objekt.

NullReferenceException

o ist null.

Diese Methode wird verwendet, um die Lebensdauer eines COM-Objekts in verwaltetem Code verwendet explizit zu steuern. Sie sollten diese Methode verwenden, um das zugrunde liegende COM-Objekt freizugeben, das Verweise auf Ressourcen enthält, rechtzeitig oder Objekte in einer bestimmten Reihenfolge freigegeben werden müssen.

Bei jedem eintritt ein COM-Schnittstellenzeigers in die common Language Runtime (CLR) wird dieser in einem RCW gewrappt.

Der RCW besitzt einen Verweiszähler, der jedes Mal, wenn ein COM-Schnittstellenzeiger zugeordnet ist. Die ReleaseComObject -Methode dekrementiert den Verweiszähler eines RCW. Wenn der Verweiszähler 0 erreicht, die Laufzeit alle Verweise auf das nicht verwaltete COM-Objekt frei und löst eine System.NullReferenceException , wenn Sie versuchen, das Objekt weiter zu verwenden. Wenn dieselbe COM-Schnittstelle mehrmals aus nicht verwaltetem an verwalteten Code übergeben wird, wird der Verweiszähler für den Wrapper jedes Mal inkrementiert, und ein Aufruf ReleaseComObject die Anzahl der verbleibenden Verweise zurückgegeben.

Diese Methode können Sie eine RCW Verweis Count-Version zu erzwingen, sodass es tritt genau wann soll. Jedoch falsche Verwendung von ReleaseComObject kann dazu führen, dass Ihre Anwendung fehlschlägt, oder eine Zugriffsverletzung verursachen.

Betrachten Sie ein Szenario, in dem verwalteter Code in einer Anwendungsdomäne einen RCW beibehält, der eine COM-Komponente darstellt. Aufrufen der ReleaseComObject Methode auf dem RCW, der verwaltete Code nicht auf den RCW zugreifen und löst eine InvalidComObjectException Ausnahme.

Ein schwerwiegender Fehler kann auftreten, wenn ein RCW-Aufruf ausgeführt wird, wenn der RCW freigegeben wird. In diesem Fall besteht eine hohe Wahrscheinlichkeit, dass der Thread, der den Anruf eine Zugriffsverletzung verursacht. Allerdings Prozessspeicher beschädigt, und der Prozess wird möglicherweise weiterhin ausgeführt, bis er aus Gründen, die sehr schwer fehlschlägt zu debuggen sind.

Dieses Risiko wird verstärkt, wenn die COM-Komponente, die verwendet wird, wird ein Singleton aus folgendem Grund: die CLR aktiviert COM-Komponenten durch Aufrufen das COM CoCreateInstance Funktion, die den gleichen Schnittstellenzeiger zurückgibt, jedes Mal, wenn sie für Singleton-COM-Komponenten aufgerufen wird. Folglich können separate und unabhängige Stücke verwalteten Codes in einer Anwendungsdomäne für eine Singleton-COM-Komponente, den gleichen RCW verwenden und wenn entweder ein Aufrufe der ReleaseComObject Methode für die COM-Komponente, die andere beschädigt.

Verwenden Sie daher den ReleaseComObject nur dann, wenn es absolut erforderlich ist. Sie rufen Sie diese Methode, um sicherzustellen, dass eine COM-Komponente zu einem bestimmten Zeitpunkt freigegeben wird gegebenenfalls in Erwägung der FinalReleaseComObject Methode stattdessen. FinalReleaseComObject Gibt die zugrunde liegende COM-Komponente, unabhängig davon, wie oft frei, die es die CLR erneut eingegeben hat. Die interne Verweisanzahl des RCW wird um eins erhöht, jedes Mal, wenn die COM-Komponente die CLR erneut eingegeben werden. Sie könnten daher Aufrufen der ReleaseComObject -Methode in einer Schleife, bis der zurückgegebene Wert ist 0 (null). Dies erzielt dasselbe Ergebnis wie die FinalReleaseComObject Methode.

.NET Framework

Unterstützt in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8.1, Windows Phone Silverlight 8

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in:

  • SecurityCriticalAttribute 

    erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieses Element kann nicht von teilweise vertrauenswürdigem oder transparentem Code nicht verwendet werden.

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft