HandleRef Estructura
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- Atributos
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.
Handle |
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. |
Handle |
Obtiene el identificador de un recurso. |
Wrapper |
Obtiene el objeto que contiene el identificador de un recurso. |
To |
Devuelve la representación entera interna de un objeto HandleRef. |
Explicit(Handle |
Devuelve el identificador de un recurso del objeto HandleRef especificado. |
Produto | Versións |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
Comentarios de .NET
.NET é un proxecto de código aberto. Selecciona unha ligazón para ofrecer comentarios: