HandleRef Struct
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 ) HandleRef
rimanga 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. |