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
[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 HandleRef la clase se ha reemplazado SafeHandle por la clase y sus clases derivadas, así como CriticalHandle por la clase.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 HandleRef tipo de valor, GCHandlecomo, 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. Un normal, no anclado GCHandle también evita la recolección de elementos no utilizados inesperadamente, pero HandleRef proporciona un mejor rendimiento.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Aunque es HandleRef preferible usar para mantener un objeto activo mientras se prefiere una llamada de invocación de plataforma, también puede GC.KeepAlive usar el método 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 HandleRef constructor 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: