Partager via


Marshal.Release(IntPtr) Méthode

Définition

Décrémente le décompte de références sur l'interface spécifiée.

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

Paramètres

pUnk
IntPtr

nativeint

Interface à libérer.

Retours

Nouvelle valeur du décompte de références sur l'interface spécifiée par le paramètre pUnk.

Attributs

Exemples

L’exemple suivant montre comment récupérer une IUnknown interface pour un objet managé à l’aide de la GetIUnknownForObject méthode . L’exemple libère ensuite le pointeur d’interface en appelant la Release méthode .

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

Remarques

Le Common Language Runtime gère le nombre de références d’un objet COM pour vous, ce qui rend inutile l’utilisation directe de cette méthode. Utilisez cette valeur uniquement à des fins de test. Dans de rares cas, comme le test d’un marshaleur personnalisé, il peut s’avérer nécessaire de manipuler manuellement la durée de vie d’un objet. Seuls les programmes qui appellent Marshal.AddRef doivent appeler Release. Le fait d’appeler Release une fois que le nombre de références a atteint zéro entraîne un comportement non défini.

Vous pouvez appeler Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjectou Marshal.GetIDispatchForObject pour obtenir une IntPtr valeur qui représente un pointeur d’interface IUnknown vers release. Vous pouvez également utiliser ces méthodes et la Release méthode sur les objets managés pour libérer les interfaces COM représentées par le wrapper COM Callable de l’objet managé.

S’applique à

Voir aussi