Marshal.Release(IntPtr) Método

Definição

Diminui a contagem de referência na interface especificada.Decrements the reference count on the specified interface.

public:
 static int Release(IntPtr pUnk);
[System.Security.SecurityCritical]
public static int Release (IntPtr pUnk);
static member Release : nativeint -> int
Public Shared Function Release (pUnk As IntPtr) As Integer

Parâmetros

pUnk
IntPtr

A interface a ser liberada.The interface to release.

Retornos

O novo valor da contagem de referência na interface especificada pelo parâmetro pUnk.The new value of the reference count on the interface specified by the pUnk parameter.

Atributos

Exemplos

O exemplo a seguir demonstra como recuperar uma interface IUnknown para um objeto gerenciado usando o método GetIUnknownForObject.The following example demonstrates how to retrieve an IUnknown interface for a managed object using the GetIUnknownForObject method. Em seguida, o exemplo libera o ponteiro da interface chamando o método Release.The example then releases the interface pointer by calling the Release method.

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


Comentários

O Common Language Runtime gerencia a contagem de referência de um objeto COM para você, tornando-o desnecessário usar esse método diretamente.The common language runtime manages the reference count of a COM object for you, making it unnecessary to use this method directly. Use esse valor somente para fins de teste.Use this value only for testing purposes. Em casos raros, como testar um marshaler personalizado, talvez você ache necessário manipular o tempo de vida de um objeto manualmente.In rare cases, such as testing a custom marshaler, you might find it necessary to manipulate an object's lifetime manually. Somente os programas que chamam Marshal.AddRef devem chamar Release.Only programs that call Marshal.AddRef should call Release. Chamar Release depois que a contagem de referência atingir zero causa um comportamento indefinido.Calling Release after the reference count has reached zero causes undefined behavior.

Você pode chamar Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjectou Marshal.GetIDispatchForObject para obter um valor de IntPtr que representa um ponteiro de interface IUnknown a ser liberado.You can call Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObject, or Marshal.GetIDispatchForObject to obtain an IntPtr value that represents a IUnknown interface pointer to release. Você também pode usar esses métodos e o método Release em objetos gerenciados para liberar as interfaces COM representadas pelo wrapper com callabledo objeto gerenciado.You can also use these methods and the Release method on managed objects to release the COM interfaces represented by the managed object's COM Callable Wrapper.

Segurança

SecurityCriticalAttribute
requer confiança total para o chamador imediato.requires full trust for the immediate caller. Este membro não pode ser usado pelo código transparente ou parcialmente confiável.This member cannot be used by partially trusted or transparent code.

Aplica-se a

Veja também