HandleRef HandleRef HandleRef HandleRef Struct

Определение

Инкапсулирует управляемый объект, который содержит дескриптор для ресурса (передается в неуправляемый код с помощью вызова платформы).Wraps a managed object holding a handle to a resource that is passed to unmanaged code using platform invoke.

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

Комментарии

Важно!

Начиная с .NET Framework 2.0, функциональные возможности HandleRef класс был заменен классом SafeHandle класс и его производные классы, как и с помощью CriticalHandle класса.Starting with the .NET Framework 2.0, the functionality of the HandleRef class has been replaced by the SafeHandle class and its derived classes, as well as by the CriticalHandle class.

При использовании платформы для вызова управляемого объекта и объект не используется в другом месте после вызова платформы, можно для сбора мусора для завершения управляемого объекта.If you use platform invoke to call a managed object, and the object is not referenced elsewhere after the platform invoke call, it is possible for the garbage collector to finalize the managed object. Это действие освобождает ресурс и делает недействительным дескриптор, вызывая сбой вызова.This action releases the resource and invalidates the handle, causing the platform invoke call to fail. Перезапись дескриптора с HandleRef завершения гарантии, что управляемый объект не мусора до вызова платформы.Wrapping a handle with HandleRef guarantees that the managed object is not garbage collected until the platform invoke call completes. Описание платформы службы вызова неуправляемого кода, см. в разделе использование неуправляемых функций DLL.For a description of platform invoke services, see Consuming Unmanaged DLL Functions.

HandleRef Тип значений, например GCHandle, — это специальный тип, распознаваемый упаковщик взаимодействия.The HandleRef value type, like GCHandle, is a special type recognized by the interop marshaler. Это Обычный нефиксированный GCHandle также предотвращает несвоевременное удаление сборщиком мусора, пока HandleRef обеспечивает более высокую производительность.A normal, nonpinned GCHandle also prevents untimely garbage collection, yet HandleRef provides better performance. Несмотря на то, что с помощью HandleRef для сохранения объекта, для вызова неуправляемого кода длительность платформы является предпочтительным, можно также использовать GC.KeepAlive метода для той же цели.Although using HandleRef to keep an object alive for the duration of a platform invoke call is preferred, you can also use the GC.KeepAlive method for the same purpose.

HandleRef Конструктор принимает два параметра: Object представляет оболочку и IntPtr представляющий неуправляемого дескриптора.The HandleRef constructor takes two parameters: an Object representing the wrapper, and an IntPtr representing the unmanaged handle. Маршалер передает только дескриптор неуправляемого кода и гарантирует, что оболочки (передается в качестве первого параметра в конструктор HandleRef) остается активным в течение всего вызова.The interop marshaler passes only the handle to unmanaged code, and guarantees that the wrapper (passed as the first parameter to the constructor of the HandleRef) remains alive for the duration of the call.

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

HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr) HandleRef(Object, IntPtr)

Инициализирует новый экземпляр класса HandleRef, используя инкапсулируемый объект и дескриптор ресурса, используемого неуправляемым кодом.Initializes a new instance of the HandleRef class with the object to wrap and a handle to the resource used by unmanaged code.

Свойства

Handle Handle Handle Handle

Возвращает дескриптор для ресурса.Gets the handle to a resource.

Wrapper Wrapper Wrapper Wrapper

Возвращает объект, содержащий дескриптор для ресурса.Gets the object holding the handle to a resource.

Методы

ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef) ToIntPtr(HandleRef)

Возвращает внутреннее целочисленное представление объекта HandleRef.Returns the internal integer representation of a HandleRef object.

Операторы

Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr) Explicit(HandleRef to IntPtr)

Возвращает дескриптор для ресурса указанного объекта HandleRef.Returns the handle to a resource of the specified HandleRef object.

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

Дополнительно