Marshal.Release(IntPtr) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A hivatkozási szám a megadott felületen csökken.
public:
static int Release(IntPtr pUnk);
[System.Security.SecurityCritical]
public static int Release(IntPtr pUnk);
public static int Release(IntPtr pUnk);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static int Release(IntPtr pUnk);
[<System.Security.SecurityCritical>]
static member Release : nativeint -> int
static member Release : nativeint -> int
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member Release : nativeint -> int
Public Shared Function Release (pUnk As IntPtr) As Integer
Paraméterek
- pUnk
-
IntPtr
nativeint
A kiadáshoz használható felület.
Válaszok
A hivatkozás új értéke a paraméter által pUnk megadott felületen található.
- Attribútumok
Példák
Az alábbi példa bemutatja, hogyan kérhető le egy IUnknown felület egy felügyelt objektumhoz a GetIUnknownForObject módszerrel. A példa ezután a metódus meghívásával felengedi a felületmutatót Release .
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
Megjegyzések
A közös nyelvi futtatókörnyezet kezeli a COM-objektumok referenciaszámát, így szükségtelen a módszer közvetlen használata. Ezt az értéket csak tesztelési célokra használja. Ritka esetekben, például egy egyéni marsall tesztelése esetén szükség lehet egy objektum élettartamának manuális módosítására. Csak a hívást kezdeményező Marshal.AddRef programok hívhatóak meg Release. Ha a hivatkozásszám elérte a nullát, a hívás Release nem definiált viselkedést okoz.
Meghívhat Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjectvagy Marshal.GetIDispatchForObject beszerezhet egy IntPtr értéket, amely egy IUnknown felület mutatót jelöl a kiadáshoz. Ezeket a metódusokat és a Release felügyelt objektumokon lévő metódust is használhatja a felügyelt objektum COM-hívó burkolója által képviselt COM-felületek felszabadításához.