HandleRef Структура

Определение

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

public value class HandleRef
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
public readonly struct HandleRef
type HandleRef = struct
[<System.Runtime.InteropServices.ComVisible(true)>]
type HandleRef = struct
Public Structure HandleRef
Наследование
HandleRef
Атрибуты

Комментарии

Important

Функциональные 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 объекта.

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

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