Compartir a través de


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.

public value class HandleRef
public readonly struct HandleRef
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
type HandleRef = struct
[<System.Runtime.InteropServices.ComVisible(true)>]
type HandleRef = struct
Public Structure HandleRef
Herencia
HandleRef
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, así como por la CriticalHandle clase .

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. Esta acción libera el recurso y invalida el identificador, lo que provoca un error en la llamada de invocación de plataforma. Encapsular un identificador con HandleRef garantías de que el objeto administrado no se recolecte de elementos no utilizados hasta que se complete la llamada de invocación de plataforma. Para obtener una descripción de los servicios de invocación de plataforma, consulte Consumo de funciones DLL no administradas.

El tipo de HandleRef valor, como GCHandle, es un tipo especial reconocido por el serializador de interoperabilidad. Una recolección de elementos no utilizados normal y no anclada GCHandle también evita la recolección de elementos no utilizados intime, pero HandleRef proporciona un mejor rendimiento. Aunque se prefiere usar HandleRef para mantener activo un objeto mientras dure una llamada de invocación de plataforma, también puede usar el GC.KeepAlive método para el mismo propósito.

El HandleRef constructor toma dos parámetros: un que Object representa el contenedor y un que IntPtr representa el identificador no administrado. El serializador de interoperabilidad pasa solo el identificador al código no administrado y garantiza que el contenedor (pasado como primer parámetro al constructor de HandleRef) permanece activo durante la llamada.

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.

Propiedades

Handle

Obtiene el identificador de un recurso.

Wrapper

Obtiene el objeto que contiene el identificador de un recurso.

Métodos

ToIntPtr(HandleRef)

Devuelve la representación entera interna de un objeto HandleRef.

Operadores

Explicit(HandleRef to IntPtr)

Devuelve el identificador de un recurso del objeto HandleRef especificado.

Se aplica a

Consulte también