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

Commenti

Importante

A partire da .NET Framework 2.0, la funzionalità dei HandleRef classe è stata sostituita dal SafeHandle classe e le relative classi derivate, come e dal CriticalHandle classe.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.

Se si usa platform invoke per chiamare un oggetto gestito e l'oggetto non viene fatto riferimento in un' posizione dopo la chiamata di platform invoke, è possibile che il garbage collector finalizzi l'oggetto gestito.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. Questa operazione rilascia la risorsa e invalida l'handle, causando la piattaforma di richiamare una chiamata non riuscirà.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Il wrapping di un handle con HandleRef completa garantisce che l'oggetto gestito non è sottoposto a garbage collection fino a quando la chiamata di PInvoke.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Per una descrizione della piattaforma di richiamare i servizi, vedere Consuming Unmanaged DLL Functions.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

Il HandleRef tipo valore, ad esempio GCHandle, è un tipo speciale riconosciuto dal marshalling di interoperabilità.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Una normale, non bloccata GCHandle impedisce inoltre inopportuna di garbage collection, ancora HandleRef offre prestazioni migliori.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Sebbene l'utilizzo HandleRef è preferibile mantenere attivo un oggetto per la durata di una piattaforma chiamata invoke, è anche possibile usare il GC.KeepAlive metodo allo stesso scopo.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.

Il HandleRef costruttore accetta due parametri: un Object che rappresenta il wrapper e un IntPtr che rappresenta l'handle non gestito.The HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. Passa solo l'handle a codice non gestito, il marshalling di interoperabilità e garantisce che il wrapper (passato come primo parametro al costruttore del HandleRef) rimane attivo per la durata della chiamata.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.

Costruttori

HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) 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.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Proprietà

Handle Handle Handle Handle

Ottiene l'handle a una risorsa.Gets the handle to a resource.

Wrapper Wrapper Wrapper Wrapper

Ottiene l'oggetto che contiene l'handle a una risorsa.Gets the object holding the handle to a resource.

Metodi

ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef)

Restituisce la rappresentazione interna come valori interi di un oggetto HandleRef.Returns the internal integer representation of a HandleRef object.

Operatori

Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr)

Restituisce l'handle a una risorsa dell'oggetto HandleRef specificato.Returns the handle to a resource of the specified HandleRef object.

Si applica a

Vedi anche