Marshal.Release(IntPtr) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Sníží počet odkazů na zadané rozhraní.
public:
static int Release(IntPtr pUnk);
[System.Security.SecurityCritical]
public static int Release (IntPtr pUnk);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static int Release (IntPtr pUnk);
public static int Release (IntPtr pUnk);
[<System.Security.SecurityCritical>]
static member Release : nativeint -> int
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member Release : nativeint -> int
static member Release : nativeint -> int
Public Shared Function Release (pUnk As IntPtr) As Integer
Parametry
- pUnk
-
IntPtr
nativeint
Rozhraní, které se má uvolnit.
Návraty
Nová hodnota referenčního počtu v rozhraní určeném parametrem pUnk
.
- Atributy
Příklady
Následující příklad ukazuje, jak načíst IUnknown
rozhraní pro spravovaný objekt pomocí GetIUnknownForObject metody . Příklad pak uvolní ukazatel rozhraní voláním Release metody .
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
Poznámky
Modul CLR (Common Language Runtime) spravuje počet odkazů objektu COM za vás, takže není nutné používat tuto metodu přímo. Tuto hodnotu použijte pouze pro účely testování. Ve výjimečných případech, jako je například testování vlastního zařazování, může být nutné ručně manipulovat s životností objektu. Pouze programy, které volají Marshal.AddRef , by měly volat Release. Volání Release po dosažení nulového počtu odkazů způsobí nedefinované chování.
Voláním , Marshal.GetIUnknownForObjectnebo Marshal.GetIDispatchForObject můžete Marshal.GetComInterfaceForObjectzískat IntPtr hodnotu, která představuje ukazatel rozhraní IUnknown pro vydání. Můžete také použít tyto metody a metodu Release u spravovaných objektů k uvolnění rozhraní modelu COM reprezentované obálkou com volatelné objektu.