HandleRef Struktura
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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. |