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 関数の使用」を参照してください。

GCHandleなどのHandleRef値型は、相互運用マーシャラーによって認識される特殊な型です。 また、固定されていない通常の GCHandle は、ガベージ コレクションを誤って防ぎますが、 HandleRef はパフォーマンスを向上させます。 HandleRefを使用して、プラットフォーム呼び出し呼び出しの期間中はオブジェクトを維持することをお勧めしますが、同じ目的で GC.KeepAlive メソッドを使用することもできます。

HandleRef コンストラクターは、ラッパーを表すObjectとアンマネージ ハンドルを表すIntPtrの 2 つのパラメーターを受け取ります。 相互運用マーシャラーはハンドルのみをアンマネージ コードに渡し、呼び出しの間、ラッパー ( HandleRef のコンストラクターに最初のパラメーターとして渡される) が有効なままであることを保証します。

コンストラクター

名前 説明
HandleRef(Object, IntPtr)

ラップするオブジェクトと、アンマネージ コードによって使用されるリソースへのハンドルを使用して、 HandleRef クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
Handle

リソースへのハンドルを取得します。

Wrapper

リソースへのハンドルを保持するオブジェクトを取得します。

メソッド

名前 説明
ToIntPtr(HandleRef)

HandleRef オブジェクトの内部整数表現を返します。

演算子

名前 説明
Explicit(HandleRef to IntPtr)

指定した HandleRef オブジェクトのリソースへのハンドルを返します。

適用対象

こちらもご覧ください