HandleRef Struktura

Definice

Zabalí spravovaný objekt, který uchovává popisovač pro prostředek, který se předává nespravovanému kódu pomocí vyvolání platformy.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
Dědičnost
HandleRef
Atributy

Poznámky

Důležité

Počínaje .NET Framework 2,0 byla funkce HandleRef třídy nahrazena SafeHandle třídou a jejími odvozenými třídami a také CriticalHandle třídou.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.

Použijete-li vyvolání platformy pro volání spravovaného objektu a objekt není odkazován jinde po volání vyvolání platformy, může systém uvolňování paměti dokončit spravovaný objekt.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. Tato akce uvolní prostředek a zruší platnost popisovače, což způsobí selhání volání vyvolání platformy.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Zabalení popisovače s HandleRef jistotou, že spravovaný objekt není uvolněn z paměti, dokud volání metody Invoke nedokončíte.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Popis služeb vyvolání platformy naleznete v tématu spotřebovávání nespravovaných funkcí DLL.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

Typ hodnoty, jako GCHandleje speciální typ rozpoznávaný zařazováním Interop. HandleRefThe HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Normální, nepřipnutý GCHandle také zabraňuje uvolňování paměti bez časového intervalu, ale HandleRef poskytuje lepší výkon.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. I když HandleRef se používá k zachování objektu po dobu trvání volání vyvolání platformy, můžete GC.KeepAlive použít také metodu pro stejný účel.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.

Konstruktor přijímá dva parametry Object : představuje obálku a IntPtr představuje nespravovaný popisovač. HandleRefThe HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. Zařazovací modul Interop předává pouze popisovač nespravovaného kódu a zaručuje, že obálka (předaná jako první parametr konstruktoru třídy HandleRef) zůstane aktivní po dobu trvání volání.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.

Konstruktory

HandleRef(Object, IntPtr)

Inicializuje novou instanci HandleRef třídy s objektem, který se má zabalit, a popisovačem prostředku používaného nespravovaným kódem.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Vlastnosti

Handle

Získá popisovač prostředku.Gets the handle to a resource.

Wrapper

Získává objekt, který uchovává popisovač pro prostředek.Gets the object holding the handle to a resource.

Metody

ToIntPtr(HandleRef)

Vrátí vnitřní celočíselnou reprezentaci HandleRef objektu.Returns the internal integer representation of a HandleRef object.

Operátory

Explicit(HandleRef to IntPtr)

Vrátí popisovač pro prostředek zadaného HandleRef objektu.Returns the handle to a resource of the specified HandleRef object.

Platí pro

Viz také