Share via


DependentHandle Struktura

Definice

Představuje závislý popisovač uvolňování paměti. Tento popisovač podmíněně udržuje aktivní závislou instanci objektu, dokud je aktivní také cílová instance objektu, aniž by představoval silný odkaz na cílovou instanci.

public value class DependentHandle : IDisposable
public struct DependentHandle : IDisposable
type DependentHandle = struct
    interface IDisposable
Public Structure DependentHandle
Implements IDisposable
Dědičnost
DependentHandle
Implementuje

Poznámky

Hodnota DependentHandle s danou instancí objektu jako cílem nezpůsobí zachování cíle, pokud na něj nejsou žádné jiné silné odkazy, ale bude tak učinit pro instanci závislého objektu, dokud je cíl aktivní.

Použití tohoto typu je koncepčně ekvivalentní slabému odkazu na danou cílovou instanci objektu A, přičemž tento objekt má pole nebo vlastnost (nebo nějaký jiný silný odkaz) na instanci závislého objektu B.

Typ DependentHandle není bezpečný pro přístup z více vláken a příjemci zodpovídají za to, že Dispose() se nebude volat souběžně s jinými rozhraními API. Pokud to neuděláte, bude výsledkem nedefinované chování.

Vlastnosti IsAllocated, Target, Dependenta TargetAndDependent jsou místo toho bezpečné pro přístup z více vláken a bezpečné použití, pokud Dispose() nejsou vyvolány současně.

Konstruktory

DependentHandle(Object, Object)

Inicializuje novou instanci DependentHandle struktury se zadanými argumenty.

Vlastnosti

Dependent

Získá nebo nastaví instanci závislého objektu pro aktuální popisovač.

IsAllocated

Získá hodnotu označující, zda byla tato instance vytvořena a DependentHandle(Object, Object) dosud nebyla uvolněna.

Target

Získá nebo nastaví instanci cílového objektu pro aktuální popisovač. Cíl lze nastavit na null hodnotu pouze po DependentHandle vytvoření instance. Pokud to Dependent uděláte, začne se také vracet null a získá nárok na shromažďování i v případě, že předchozí cíl stále existuje.

TargetAndDependent

Získá hodnoty a TargetDependent (pokud jsou k dispozici) jako atomické operace. To znamená, že i když Target je současně nastavena na null, volání této metody buď vrátí null cíl i závislé, nebo vrátí obě předchozí hodnoty. Pokud Target by se v tomto scénáři místo toho používaly postupně a Dependent , bylo by někdy možné úspěšně načíst předchozí cíl, ale pak se nepodaří získat závislý.

Metody

Dispose()

Provede aplikací definované úlohy spojené s uvolněním nebo resetováním nespravovaných prostředků.

Platí pro