Udostępnij za pośrednictwem


Marshal.Release(IntPtr) Metoda

Definicja

Dekrementuje liczbę odwołań dla określonego interfejsu.

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

Interfejs do wydania.

Zwraca

Nowa wartość liczby odwołań dla interfejsu określonego pUnk przez parametr .

Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak pobrać IUnknown interfejs dla obiektu zarządzanego przy użyciu GetIUnknownForObject metody . Następnie przykład zwalnia wskaźnik interfejsu Release przez wywołanie 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

Uwagi

Środowisko uruchomieniowe języka wspólnego zarządza liczbą odwołań obiektu COM, co sprawia, że nie trzeba używać tej metody bezpośrednio. Tej wartości należy używać tylko do celów testowych. W rzadkich przypadkach, takich jak testowanie niestandardowego marshalera, może być konieczne ręczne manipulowanie okresem istnienia obiektu. Tylko programy, które wywołają metodę Marshal.AddRef , powinny wywołać metodę Release. Wywołanie metody Release po osiągnięciu zera liczby odwołań powoduje niezdefiniowane zachowanie.

Można wywołać Marshal.GetComInterfaceForObjectmetodę IntPtr , Marshal.GetIUnknownForObjectlub Marshal.GetIDispatchForObject , aby uzyskać wartość reprezentującą wskaźnik interfejsu IUnknown do wydania. Można również użyć tych metod i Release metody w obiektach zarządzanych, aby zwolnić interfejsy COM reprezentowane przez obiekt zarządzany COM Callable Wrapper.

Dotyczy

Zobacz też