HandleRef 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
プラットフォーム呼び出しを使用してアンマネージド コードに渡されるリソースへのハンドルを保持しているマネージド オブジェクトをラップします。
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機能は、クラスとその派生クラス、およびクラスによってCriticalHandle置き換えられましたSafeHandle。
プラットフォーム呼び出しを使用してマネージド オブジェクトを呼び出し、そのオブジェクトがプラットフォーム呼び出しの呼び出し後に他の場所で参照されていない場合は、ガベージ コレクターがマネージド オブジェクトを最終処理できます。 このアクションにより、リソースが解放され、ハンドルが無効になり、プラットフォーム呼び出しが失敗します。 ハンドルをラップして HandleRef 、プラットフォーム呼び出しが完了するまでマネージド オブジェクトがガベージ コレクションされないことを保証します。 プラットフォーム呼び出しサービスの詳細については、「 アンマネージド DLL 関数の使用」を参照してください。
値型 ( HandleRef 例: GCHandle) は、相互運用マーシャラーによって認識される特殊な型です。 また、通常の固定されていない GCHandle 場合でも、ガベージ コレクションが時間を取らなくなりますが HandleRef 、パフォーマンスが向上します。 プラットフォーム呼び出しの間、オブジェクトを存続させるために使用 HandleRef することをお勧めしますが、同じ目的でこのメソッドを GC.KeepAlive 使用することもできます。
コンストラクターは HandleRef 、ラッパーを Object 表すパラメーターと IntPtr アンマネージ ハンドルを表す 2 つのパラメーターを受け取ります。 相互運用マーシャラーはハンドルのみをアンマネージ コードに渡し、呼び出しの間、ラッパー (コンストラクターに最初の HandleRef
パラメーターとして渡される) が有効なままであることを保証します。
コンストラクター
HandleRef(Object, IntPtr) |
ラップするオブジェクトと、アンマネージ コードで使用するリソースへのハンドルを指定して、HandleRef クラスの新しいインスタンスを初期化します。 |
プロパティ
Handle |
リソースへのハンドルを取得します。 |
Wrapper |
リソースへのハンドルを保持しているオブジェクトを取得します。 |
メソッド
ToIntPtr(HandleRef) |
HandleRef オブジェクトの内部整数表現を返します。 |
演算子
Explicit(HandleRef to IntPtr) |
指定した HandleRef オブジェクトのリソースへのハンドルを返します。 |