Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
Marshal.Release (Método)

Disminuye el contador de referencia de la interfaz especificada.

Espacio de nombres: System.Runtime.InteropServices
Ensamblado: mscorlib (en mscorlib.dll)

Visual Basic (Declaración)
Public Shared Function Release ( _
    pUnk As IntPtr _
) As Integer
Visual Basic (Uso)
Dim pUnk As IntPtr
Dim returnValue As Integer

returnValue = Marshal.Release(pUnk)
C#
public static int Release (
    IntPtr pUnk
)
C++
public:
static int Release (
    IntPtr pUnk
)
J#
public static int Release (
    IntPtr pUnk
)
JScript
public static function Release (
    pUnk : IntPtr
) : int

Parámetros

pUnk

Interfaz que se va a liberar.

Valor devuelto

Nuevo valor del contador de referencias en la interfaz especificada por el parámetro pUnk.

Common Language Runtime administra el contador de referencias de un objeto COM, por lo que no es necesario utilizar este método directamente. Utilice este valor sólo para pruebas. En muy raras ocasiones, como cuando se prueba un contador de referencias personalizado, puede ser necesario manipular manualmente la duración de un objeto. Sólo los programas que llaman a Marshal.AddRef deben llamar a Release. Si se llama al método Release después de que el contador de referencias haya llegado a cero, se genera un comportamiento no definido.

Puede llamar a Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObject o Marshal.GetIDispatchForObject para obtener un valor de IntPtr que represente un puntero de interfaz IUnknown que se vaya a liberar. También puede utilizar estos métodos y el método Release en objetos administrados para liberar las interfaces COM representadas por el contenedor COM al que se puede llamar del objeto administrado. Si no está familiarizado con este tipo de contenedor, vea Contenedor COM al que se puede llamar.

NotaNota

Este método utiliza SecurityAction.LinkDemand para evitar que se le llame desde código que no sea de confianza; sólo el llamador inmediato debe disponer del permiso SecurityPermissionAttribute.UnmanagedCode. Si se puede llamar al código desde código de confianza parcial, no pase ninguna entrada de usuario a los métodos de la clase Marshal sin validación. Para conocer las limitaciones importantes que existen a la hora de utilizar el miembro LinkDemand, vea Demand frente a LinkDemand.

En el ejemplo de código siguiente se muestra cómo recuperar una interfaz IUnknown para un objeto administrado utilizando el método GetIUnknownForObject. A continuación, se libera a continuación el puntero de interfaz llamando al método Release.

Visual Basic
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

C#
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();
    }
}

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker