Marshal.Release(IntPtr) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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é.