Marshal.Release-Methode: (IntPtr)
Veröffentlicht: Oktober 2016
Dekrementiert den Verweiszähler für die angegebene Schnittstelle.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
[SecurityCriticalAttribute]
public static int Release(
IntPtr pUnk
)
public:
[SecurityCriticalAttribute]
static int Release(
IntPtr pUnk
)
[<SecurityCriticalAttribute>]
static member Release :
pUnk:nativeint -> int
<SecurityCriticalAttribute>
Public Shared Function Release (
pUnk As IntPtr
) As Integer
Parameter
pUnk
Type: System.IntPtrDie freizugebende Schnittstelle.
Rückgabewert
Type: System.Int32
Der neue Wert des Verweiszählers für die Schnittstelle, die durch den pUnk-Parameter angegeben ist.
Hinweise
Die common Language Runtime verwaltet den Verweiszähler eines COM-Objekts für Sie, sodass es nicht erforderlich, diese Methode direkt verwenden. Verwenden Sie diesen Wert nur für Testzwecke. In seltenen Fällen, beispielsweise bei einen benutzerdefinierten Marshaller Tests, möglicherweise finden Sie es erforderlich, die Lebensdauer eines Objekts manuell zu bearbeiten. Dieser Aufruf nur Programme Marshal.AddRef sollten Aufrufen Release. Aufrufen von Release nach der Verweiszähler erreicht 0 (null) bewirkt, dass nicht definiertes Verhalten.
Rufen Sie Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObject, oder Marshal.GetIDispatchForObject zum Abrufen einer IntPtr -Wert, der darstellt, ein IUnknown -Schnittstellenzeiger. Sie können diese Methoden auch verwenden und die Release Methode für verwaltete Objekte, die COM-Schnittstellen, die durch des verwalteten Objekts dargestellte freizugeben COM Callable Wrapper.
Beispiele
Das folgende Beispiel veranschaulicht das Abrufen einer IUnknown Schnittstelle für ein verwaltetes Objekt mit der GetIUnknownForObject Methode. Das Beispiel gibt dann den Schnittstellenzeiger frei, durch Aufrufen der Release Methode.
using System;
using System.Runtime.InteropServices;
class Program
{
static void Run()
{
// Create an int object
int obj = 1;
Console.WriteLine("Calling Marshal.GetIUnknownForObject...");
// Get the IUnKnown pointer for the Integer object
IntPtr pointer = Marshal.GetIUnknownForObject(obj);
Console.WriteLine("Calling Marshal.Release...");
// Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer);
}
static void Main(string[] args)
{
Run();
}
}
Imports System.Runtime.InteropServices
Module Program
Sub Run()
' Dim an Integer object
Dim IntegerObject As Integer = 1
' Dim a pointer
Dim pointer As IntPtr
Console.WriteLine("Calling Marshal.GetIUnknownForObject...")
' Get the IUnKnown pointer for the Integer object
pointer = Marshal.GetIUnknownForObject(IntegerObject)
Console.WriteLine("Calling Marshal.Release...")
' Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer)
End Sub
Sub Main(ByVal args() As String)
Run()
End Sub
End Module
Sicherheit
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Versionsinformationen
Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Siehe auch
AddRef
QueryInterface
GetComInterfaceForObject
GetIUnknownForObject
GetIDispatchForObject
Marshal-Klasse
System.Runtime.InteropServices-Namespace
Zurück zum Anfang