HandleRef HandleRef HandleRef HandleRef Struct

Definition

Umschließt ein verwaltetes Objekt, das ein Handle zu einer Ressource enthält, die über einen Plattformaufruf an nicht verwalteten Code übergeben wird.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
Vererbung
Attribute

Hinweise

Wichtig

Beginnend mit dem .NET Framework 2,0 wurde die Funktionalität HandleRef der-Klasse durch die SafeHandle -Klasse und die von ihnen abgeleiteten Klassen sowie durch die CriticalHandle -Klasse ersetzt.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.

Wenn Sie einen Platt Form Aufruf verwenden, um ein verwaltetes Objekt aufzurufen, und nach dem Aufruf der Platt Form Aufrufe nicht auf das Objekt verwiesen wird, ist es möglich, dass der Garbage Collector das verwaltete Objekt finalisieren kann.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. Durch diese Aktion wird die Ressource freigegeben, und das Handle wird für ungültig erklärt, sodass der Aufruf der Platt Form Aufruf fehlschlägt.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Durch das umwickeln HandleRef eines Handles mit wird sichergestellt, dass das verwaltete Objekt nicht bereinigt wird, bis der Platt Form Aufruf abgeschlossen ist.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Eine Beschreibung der Platt Form Aufruf Dienste finden Sie unter verwenden nicht verwalteter DLL-Funktionen.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

Der HandleRef Werttyp, GCHandlewie z. b., ist ein spezieller Typ, der vom Interop-Mars Haller erkannt wird.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Ein normales, nicht GCHandle angeheftet verhindert auch eine nicht rechtzeitige Garbage Collection, bietet aber HandleRef eine bessere Leistung.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Obwohl die HandleRef Verwendung von zum Beibehalten eines Objekts für die Dauer eines Platt Form Aufrufs bevorzugt wird, können Sie auch die GC.KeepAlive -Methode für denselben Zweck verwenden.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.

Der HandleRef -Konstruktor benötigt zwei Parameter: Object einen, der den Wrapper darstellt IntPtr , und einen, der das nicht verwaltete Handle darstellt.The HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. Der Interop-Mars Haller übergibt nur das Handle an den nicht verwalteten Code und garantiert, dass der Wrapper (der als erster Parameter an den Konstruktor von HandleRefübergeben wird) für die Dauer des Aufrufes bleibt.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.

Konstruktoren

HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr)

Initialisiert eine neue Instanz der HandleRef-Klasse mit dem zu umschließenden Objekt und einem Handle auf die Ressource, die von nicht verwaltetem Code verwendet wird.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Eigenschaften

Handle Handle Handle Handle

Ruft das Handle für eine Ressource ab.Gets the handle to a resource.

Wrapper Wrapper Wrapper Wrapper

Ruft das Objekt ab, das das Handle für eine Ressource enthält.Gets the object holding the handle to a resource.

Methoden

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

Gibt die interne Ganzzahldarstellung eines HandleRef-Objekts zurück.Returns the internal integer representation of a HandleRef object.

Operatoren

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

Gibt das Handle für eine Ressource des angegebenen HandleRef-Objekts zurück.Returns the handle to a resource of the specified HandleRef object.

Gilt für:

Siehe auch