Share via


DependentHandle 構造体

定義

依存ガベージ コレクション ハンドルを表します。 このハンドルは、ターゲット インスタンスへの強い参照を表すことなく、ターゲット オブジェクト インスタンスもアライブである限り、依存オブジェクト インスタンスを条件付きでアライブに維持します。

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

注釈

DependentHandle指定されたオブジェクト インスタンスを target として持つ値は、ターゲットへの他の厳密な参照がない場合、ターゲットをアクティブに保つわけではありませんが、ターゲットがアクティブである限り、依存オブジェクト インスタンスに対して実行されます。

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

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

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

コンストラクター

DependentHandle(Object, Object)

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

プロパティ

Dependent

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

IsAllocated

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

Target

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

TargetAndDependent

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

メソッド

Dispose()

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

適用対象