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. |
Применяется к
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по