Marshal.Release(IntPtr) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Disminuye el contador de referencia de la interfaz especificada.
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
Parámetros
- pUnk
-
IntPtr
nativeint
Interfaz que se va a liberar.
Devoluciones
Nuevo valor del contador de referencias en la interfaz especificada por el parámetro pUnk
.
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo recuperar una IUnknown
interfaz para un objeto administrado mediante el GetIUnknownForObject método . A continuación, el ejemplo libera el puntero de interfaz llamando al Release método .
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
Comentarios
Common Language Runtime administra el recuento de referencias de un objeto COM, lo que hace que no sea necesario usar este método directamente. Use este valor solo con fines de prueba. En raras ocasiones, como probar un serializador personalizado, es posible que sea necesario manipular la duración de un objeto manualmente. Solo los programas que llaman Marshal.AddRef deben llamar a Release. Llamar Release después de que el recuento de referencias haya alcanzado cero provoca un comportamiento indefinido.
Puede llamar a Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjecto Marshal.GetIDispatchForObject para obtener un IntPtr valor que represente un puntero de interfaz IUnknown que se va a liberar. También puede usar estos métodos y el Release método en objetos administrados para liberar las interfaces COM representadas por el contenedor llamado COM del objeto administrado.