HandleRef Struct

Definizione

Esegue il wrapping di un oggetto gestito che contiene un handle a una risorsa passata a un codice non gestito attraverso il platform invoke.

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
Ereditarietà
HandleRef
Attributi

Commenti

Importante

A partire da .NET Framework 2.0, la funzionalità della HandleRef classe è stata sostituita dalla SafeHandle classe e dalle relative classi derivate, nonché dalla CriticalHandle classe .

Se si usa la piattaforma invoke per chiamare un oggetto gestito e l'oggetto non viene fatto riferimento altrove dopo la chiamata di chiamata alla piattaforma, è possibile che il Garbage Collector finalizzi l'oggetto gestito. Questa azione rilascia la risorsa e invalida l'handle, causando l'esito negativo della chiamata alla piattaforma. Wrapping di un handle con HandleRef garanzie che l'oggetto gestito non viene garbage collection fino al completamento della chiamata della piattaforma. Per una descrizione dei servizi di richiamo della piattaforma, vedere Utilizzo di funzioni DLL non gestite.

Il HandleRef tipo di valore, ad esempio GCHandle, è un tipo speciale riconosciuto dal marshalling dell'interoperabilità. Un normale, non rimosso GCHandle impedisce anche la Garbage Collection in temporabile, ma HandleRef offre prestazioni migliori. Anche se l'uso HandleRef per mantenere attivo un oggetto per la durata di una chiamata di chiamata della piattaforma è preferibile, è anche possibile usare il GC.KeepAlive metodo per lo stesso scopo.

Il HandleRef costruttore accetta due parametri: un Object oggetto che rappresenta il wrapper e un IntPtr che rappresenta l'handle non gestito. Il marshalling dell'interoperabilità passa solo l'handle al codice non gestito e garantisce che il wrapper (passato come primo parametro al costruttore ) HandleRefrimanga attivo per la durata della chiamata.

Costruttori

HandleRef(Object, IntPtr)

Inizializza una nuova istanza della classe HandleRef con l'oggetto di cui eseguire il wrapping e un handle alla risorsa utilizzata dal codice non gestito.

Proprietà

Handle

Ottiene l'handle a una risorsa.

Wrapper

Ottiene l'oggetto che contiene l'handle a una risorsa.

Metodi

ToIntPtr(HandleRef)

Restituisce la rappresentazione interna come valori interi di un oggetto HandleRef.

Operatori

Explicit(HandleRef to IntPtr)

Restituisce l'handle a una risorsa dell'oggetto HandleRef specificato.

Si applica a

Vedi anche