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
- Наследование
- Атрибуты
Комментарии
Важно!
Начиная с .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. |