HandleRef Estructura

Definición

Encapsula un objeto administrado que contiene un identificador de un recurso que se pasa a código no administrado mediante la invocación de la plataforma.Wraps a managed object holding a handle to a resource that is passed to unmanaged code using platform invoke.

public value class HandleRef
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
type HandleRef = struct
Public Structure HandleRef
Herencia
HandleRef
Atributos

Comentarios

Importante

A partir de la .NET Framework 2,0, la funcionalidad de la clase HandleRef se ha reemplazado por la clase SafeHandle y sus clases derivadas, así como por la clase CriticalHandle.Starting with the .NET Framework 2.0, the functionality of the HandleRef class has been replaced by the SafeHandle class and its derived classes, as well as by the CriticalHandle class.

Si usa la invocación de plataforma para llamar a un objeto administrado y no se hace referencia al objeto en otro lugar después de la llamada de invocación de plataforma, es posible que el recolector de elementos no utilizados finalice el objeto administrado.If you use platform invoke to call a managed object, and the object is not referenced elsewhere after the platform invoke call, it is possible for the garbage collector to finalize the managed object. Esta acción libera el recurso e invalida el identificador, provocando un error en la llamada de invocación de plataforma.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Ajustar un identificador con HandleRef garantiza que el objeto administrado no se recolecta como elemento no utilizado hasta que se completa la llamada de invocación de plataforma.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Para obtener una descripción de los servicios de invocación de plataforma, vea consumir funciones dll no administradas.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

El tipo de valor HandleRef, como GCHandle, es un tipo especial reconocido por el serializador de interoperabilidad.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Una GCHandle normal, no anclada también evita la recolección de elementos no utilizados de forma inesperada, pero HandleRef proporciona un mejor rendimiento.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Aunque es preferible usar HandleRef para mantener activo un objeto durante la ejecución de una llamada de invocación de plataforma, también puede utilizar el método GC.KeepAlive para el mismo propósito.Although using HandleRef to keep an object alive for the duration of a platform invoke call is preferred, you can also use the GC.KeepAlive method for the same purpose.

El constructor HandleRef toma dos parámetros: un Object que representa el contenedor y un IntPtr que representa el identificador no administrado.The HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. El serializador de interoperabilidad solo pasa el identificador a código no administrado y garantiza que el contenedor (que se pasa como primer parámetro al constructor del HandleRef) permanece activo mientras dure la llamada.The interop marshaler passes only the handle to unmanaged code, and guarantees that the wrapper (passed as the first parameter to the constructor of the HandleRef) remains alive for the duration of the call.

Constructores

HandleRef(Object, IntPtr)

Inicializa una nueva instancia de la clase HandleRef con el objeto que se va a incluir en un contenedor y un identificador del recurso utilizado por el código no administrado.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Propiedades

Handle

Obtiene el identificador de un recurso.Gets the handle to a resource.

Wrapper

Obtiene el objeto que contiene el identificador de un recurso.Gets the object holding the handle to a resource.

Métodos

ToIntPtr(HandleRef)

Devuelve la representación entera interna de un objeto HandleRef.Returns the internal integer representation of a HandleRef object.

Operadores

Explicit(HandleRef to IntPtr)

Devuelve el identificador de un recurso del objeto HandleRef especificado.Returns the handle to a resource of the specified HandleRef object.

Se aplica a

Consulte también: