Marshal.Release(IntPtr) Metodo

Definizione

Riduce il numero di riferimenti nell'interfaccia specificata.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

Parametri

pUnk
IntPtr

Interfaccia da liberare.The interface to release.

Restituisce

Nuovo valore del numero di riferimenti nell'interfaccia specificata dal parametro pUnk.The new value of the reference count on the interface specified by the pUnk parameter.

Attributi

Esempi

Nell'esempio seguente viene illustrato come recuperare un'interfaccia IUnknown per un oggetto gestito utilizzando il metodo GetIUnknownForObject.The following example demonstrates how to retrieve an IUnknown interface for a managed object using the GetIUnknownForObject method. Nell'esempio viene quindi rilasciato il puntatore all'interfaccia chiamando il metodo 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


Commenti

Il Common Language Runtime gestisce automaticamente il conteggio dei riferimenti di un oggetto COM, rendendolo non necessario utilizzare direttamente questo metodo.The common language runtime manages the reference count of a COM object for you, making it unnecessary to use this method directly. Utilizzare questo valore solo a scopo di test.Use this value only for testing purposes. In rari casi, ad esempio il test di un gestore di marshalling personalizzato, potrebbe essere necessario modificare manualmente la durata di un oggetto.In rare cases, such as testing a custom marshaler, you might find it necessary to manipulate an object's lifetime manually. Solo i programmi che chiamano Marshal.AddRef devono chiamare Release.Only programs that call Marshal.AddRef should call Release. La chiamata di Release dopo che il conteggio dei riferimenti ha raggiunto zero causa un comportamento non definito.Calling Release after the reference count has reached zero causes undefined behavior.

È possibile chiamare Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjecto Marshal.GetIDispatchForObject per ottenere un valore IntPtr che rappresenta un puntatore all'interfaccia IUnknown da rilasciare.You can call Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObject, or Marshal.GetIDispatchForObject to obtain an IntPtr value that represents a IUnknown interface pointer to release. È anche possibile usare questi metodi e il metodo Release sugli oggetti gestiti per rilasciare le interfacce COM rappresentate dal COM Callable Wrapperdell'oggetto gestito.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.

Sicurezza

SecurityCriticalAttribute
richiede l'attendibilità totale per il chiamante immediato.requires full trust for the immediate caller. Questo membro non può essere utilizzato da codice parzialmente attendibile o trasparente.This member cannot be used by partially trusted or transparent code.

Si applica a

Vedi anche