DependentHandle 構造体

定義

依存ガベージ コレクション ハンドルを表します。 ターゲット オブジェクト インスタンスへの厳密な参照を表さずに、ターゲット オブジェクト インスタンスが有効である限り、ハンドルは条件付きで依存オブジェクト インスタンスを維持します。

public value class DependentHandle : IDisposable
public struct DependentHandle : IDisposable
type DependentHandle = struct
    interface IDisposable
Public Structure DependentHandle
Implements IDisposable
継承
DependentHandle
実装

注釈

特定のオブジェクト インスタンスをターゲットとして持つ DependentHandle 値は、ターゲットへの他の厳密な参照がない場合は、ターゲットを維持しませんが、ターゲットが有効である限り、依存オブジェクト インスタンスに対して有効になります。

この型の使用は、概念的には、特定のターゲット オブジェクト インスタンス A への弱い参照を持ち、そのオブジェクトに依存オブジェクト インスタンス B へのフィールドまたはプロパティ (またはその他の強い参照) を持つことと同じです。

DependentHandle型はスレッド セーフではなく、コンシューマーは、Dispose()が他の API と同時に呼び出されないようにする責任があります。 これを行わないと、未定義の動作が発生します。

代わりに、 IsAllocatedTargetDependent、および TargetAndDependent のプロパティはスレッド セーフであり、 Dispose() が同時に呼び出されない場合にも安全に使用できます。

コンストラクター

名前 説明
DependentHandle(Object, Object)

指定した引数を使用して、 DependentHandle 構造体の新しいインスタンスを初期化します。

プロパティ

名前 説明
Dependent

現在のハンドルの依存オブジェクト インスタンスを取得または設定します。

IsAllocated

このインスタンスが DependentHandle(Object, Object) で構築され、まだ破棄されていないかどうかを示す値を取得します。

Target

現在のハンドルのターゲット オブジェクト インスタンスを取得または設定します。 ターゲットは、DependentHandle インスタンスが作成された後にのみ、null値に設定できます。 これを行うと、 Dependentnull の返しを開始し、前のターゲットがまだ有効な場合でもコレクションの対象になります。

TargetAndDependent

アトミック操作として TargetDependent (使用可能な場合) の両方の値を取得します。 つまり、 Target が同時に null に設定されている場合でも、このメソッドを呼び出すと、ターゲットと依存の両方の null が返されるか、前の値の両方が返されます。 このシナリオで TargetDependent が順番に使用されている場合は、前のターゲットを正常に取得できますが、依存先の取得に失敗することがあります。

メソッド

名前 説明
Dispose()

アンマネージド リソースの解放、解放、またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

適用対象