Marshal.Release(IntPtr) Metoda

Definice

Sníží počet odkazů na zadané rozhraní.

public:
 static int Release(IntPtr pUnk);
[System.Security.SecurityCritical]
public static int Release(IntPtr pUnk);
public static int Release(IntPtr pUnk);
[<System.Security.SecurityCritical>]
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 na 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 referenční počet objektu COM za vás, takže není nutné tuto metodu používat 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é manipulovat s životností objektu ručně. Volat by měly pouze programy, které volají Marshal.AddRefRelease. Volání Release po dosažení počtu odkazů nulou způsobí nedefinované chování.

Můžete volat Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjectnebo Marshal.GetIDispatchForObject získat IntPtr hodnotu, která představuje ukazatel rozhraní IUnknown k vydání. Tyto metody a metodu Release u spravovaných objektů můžete také použít k uvolnění rozhraní MODELU COM reprezentovaných obálkou com spravovaného objektu.

Platí pro

Viz také