HandleRef HandleRef HandleRef HandleRef Struct

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
Atributos

Comentarios

Importante

A partir de .NET Framework 2.0, la funcionalidad de la HandleRef clase se ha reemplazado por la SafeHandle clase y sus clases derivadas, como por el CriticalHandle 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 plataforma de invocación para llamar a un objeto administrado y el objeto no se hace referencia en otro lugar después de 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, lo que hace que la plataforma de llamada de invocación a un error.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Ajuste de un identificador con HandleRef garantías que el objeto administrado no se recopila hasta que la llamada de invocación de plataforma completa.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 la plataforma de invocación de servicios, consulte consumir funciones de DLL no administradas.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

El HandleRef tipo de valor, 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. Normal, anclado GCHandle también impide la recolección prematura, aún HandleRef proporciona un mejor rendimiento.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Aunque el uso de HandleRef mantener un objeto activo para la duración de una plataforma de invocación de llamada, se prefiere, también puede usar el GC.KeepAlive 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 sólo pasa el identificador al código no administrado y garantiza que el contenedor (pasado como primer parámetro al constructor de la HandleRef) permanece activo durante el tiempo que 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) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) 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 Handle Handle Handle

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

Wrapper Wrapper Wrapper Wrapper

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

Métodos

ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef) 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) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) 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: