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コンス トラクターは 2 つのパラメーターを受け取ります。、 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.

適用対象

こちらもご覧ください