Freigeben über


Marshal.ReleaseComObject-Methode

Dekrementiert den Verweiszähler des bereitgestellten RCW (Runtime Callable Wrapper).

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

Syntax

'Declaration
Public Shared Function ReleaseComObject ( _
    o As Object _
) As Integer
'Usage
Dim o As Object
Dim returnValue As Integer

returnValue = Marshal.ReleaseComObject(o)
public static int ReleaseComObject (
    Object o
)
public:
static int ReleaseComObject (
    Object^ o
)
public static int ReleaseComObject (
    Object o
)
public static function ReleaseComObject (
    o : Object
) : int

Parameter

  • o
    Das freizugebende COM-Objekt.

Rückgabewert

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 gewrappte COM-Objekt beibehält.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

o ist kein gültiges COM-Objekt.

– oder –

o ist NULL (Nothing in Visual Basic).

Hinweise

Bei jedem Eintritt eines COM-Schnittstellenzeigers in die Common Runtime Language wird dieser in einem RCW gewrappt. Wenn Sie mit den Features dieses Wrappers nicht vertraut sind, finden Sie unter Runtime Callable Wrapper (RCW) weitere Informationen.

Mit dieser Methode wird die Lebensdauer eines von verwaltetem Code verwendeten COM-Objekts explizit gesteuert. Verwenden Sie diese Methode, um das zugrunde liegende COM-Objekt mit den Verweisen auf Ressourcen zum gegebenen Zeitpunkt freizugeben, oder wenn Objekte in einer bestimmten Reihenfolge freigegeben werden müssen.

Der RCW besitzt einen Verweiszähler, der immer dann inkrementiert wird, wenn ihm ein COM-Schnittstellenzeiger zugeordnet wird. Die ReleaseComObject-Methode dekrementiert den Verweiszähler eines RCW. Wenn der Verweiszähler 0 (null) erreicht hat, gibt die Laufzeit alle Verweise auf das nicht verwaltete COM-Objekt frei und löst eine System.NullReferenceException aus, wenn ein Versuch unternommen wird, 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 beim Aufrufen von ReleaseComObject wird die Anzahl der verbleibenden Verweise zurückgegeben.

Hinweis

Um sicherzustellen, dass der RCW und das ursprüngliche COM-Objekt freigegeben werden, erstellen Sie eine Schleife, aus der Sie diese Methode aufrufen, bis der zurückgegebene Verweiszähler 0 erreicht.

Hinweis

Diese Methode verwendet SecurityAction.LinkDemand, um einen Aufruf aus nicht vertrauenswürdigem Code zu verhindern. Nur der direkte Aufrufer muss über die SecurityPermissionAttribute.UnmanagedCode-Berechtigung verfügen. Wenn der Code aus teilweise vertrauenswürdigem Code aufgerufen werden kann, dürfen Benutzereingaben nicht ohne Validierung an Methoden der Marshal-Klasse übergeben werden. Wichtige Einschränkungen bei der Verwendung des LinkDemand-Members finden Sie unter "Demand" und "LinkDemand".

.NET Framework-Sicherheit

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

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

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0

Siehe auch

Referenz

Marshal-Klasse
Marshal-Member
System.Runtime.InteropServices-Namespace
FinalReleaseComObject
NullReferenceException