Udostępnij za pośrednictwem


HandleRef Struktura

Definicja

Opakowuje zarządzany obiekt zawierający dojście do zasobu, który jest przekazywany do niezarządzanego kodu przy użyciu wywołania platformy.

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
Dziedziczenie
HandleRef
Atrybuty

Uwagi

Ważne

Począwszy od programu .NET Framework 2.0, funkcjonalność HandleRef klasy została zastąpiona przez klasę SafeHandle i jej klasy pochodne, a także przez klasę CriticalHandle .

Jeśli używasz wywołania platformy do wywołania obiektu zarządzanego, a obiekt nie jest przywoływał w innym miejscu po wywołaniu wywołania platformy, moduł odśmiecywania pamięci może sfinalizować zarządzany obiekt. Ta akcja zwalnia zasób i unieważnia dojście, powodując niepowodzenie wywołania wywołania platformy. Zawijanie uchwytu z gwarancjami HandleRef , że zarządzany obiekt nie jest odśmiecany do momentu zakończenia wywołania platformy. Opis usług wywoływanych przez platformę można znaleźć w temacie Korzystanie z niezarządzanych funkcji DLL.

Typ HandleRef wartości, taki jak GCHandle, jest specjalnym typem rozpoznawanym przez marshalera międzyoperatora. Normalny, nieprzypisywany GCHandle również zapobiega czasowemu wyrzucaniu elementów bezużytecznych, ale HandleRef zapewnia lepszą wydajność. Chociaż użycie metody HandleRef do utrzymania obiektu przy życiu przez czas trwania wywołania wywołania platformy jest preferowane, można również użyć GC.KeepAlive metody w tym samym celu.

Konstruktor HandleRef przyjmuje dwa parametry: Object reprezentujący otokę i IntPtr reprezentujący niezarządzany uchwyt. Marshaler międzyoperacyjności przekazuje tylko dojście do niezarządzanego kodu i gwarantuje, że otoka (przekazana jako pierwszy parametr do konstruktora HandleRef) pozostaje aktywna przez czas trwania wywołania.

Konstruktory

HandleRef(Object, IntPtr)

Inicjuje HandleRef nowe wystąpienie klasy z obiektem do zawijania i uchwytem do zasobu używanego przez niezarządzany kod.

Właściwości

Handle

Pobiera dojście do zasobu.

Wrapper

Pobiera obiekt przechowujący dojście do zasobu.

Metody

ToIntPtr(HandleRef)

Zwraca wewnętrzną reprezentację HandleRef liczb całkowitych obiektu.

Operatory

Explicit(HandleRef to IntPtr)

Zwraca dojście do zasobu określonego HandleRef obiektu.

Dotyczy

Zobacz też