HandleRef Структура

Определение

Инкапсулирует управляемый объект, который содержит дескриптор для ресурса (передается в неуправляемый код с помощью вызова платформы).

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
Наследование
HandleRef
Атрибуты

Комментарии

Важно!

Начиная с платформа .NET Framework 2.0, функциональные HandleRef возможности класса были заменены классом SafeHandle и его производными классами, а также классом CriticalHandle .

Если вы используете вызов платформы для вызова управляемого объекта, а ссылка на объект не указана в другом месте после вызова вызова платформы, сборщик мусора может завершить работу с управляемым объектом. Это действие освобождает ресурс и делает дескриптор недействительным, что приводит к сбою вызова вызова платформы. Упаковка дескриптора HandleRef гарантирует, что управляемый объект не будет собирать мусор до завершения вызова платформы. Описание служб вызова платформы см. в разделе Использование неуправляемых функций DLL.

Тип HandleRef значения, например GCHandle, является специальным типом, распознаваемым маршалером взаимодействия. Обычный без закрепления GCHandle также предотвращает несвоевременную сборку мусора, но HandleRef обеспечивает более высокую производительность. Хотя предпочтительнее использовать HandleRef для сохранения объекта в активном состоянии в течение вызова платформы, вы также можете использовать GC.KeepAlive метод для той же цели.

Конструктор HandleRef принимает два параметра: , Object представляющий оболочку, и , представляющий неуправляемый IntPtr дескриптор. Маршалер взаимодействия передает только дескриптор в неуправляемый код и гарантирует, что оболочка (переданная в качестве первого параметра конструктору HandleRef) остается активной в течение всего вызова.

Конструкторы

HandleRef(Object, IntPtr)

Инициализирует новый экземпляр класса HandleRef, используя инкапсулируемый объект и дескриптор ресурса, используемого неуправляемым кодом.

Свойства

Handle

Возвращает дескриптор для ресурса.

Wrapper

Возвращает объект, содержащий дескриптор для ресурса.

Методы

ToIntPtr(HandleRef)

Возвращает внутреннее целочисленное представление объекта HandleRef.

Операторы

Explicit(HandleRef to IntPtr)

Возвращает дескриптор для ресурса указанного объекта HandleRef.

Применяется к

См. также раздел