Freigeben über


DependentHandle Struktur

Definition

Stellt ein abhängiges Garbage Collection-Handle dar. Das Handle hält eine abhängige Objektinstanz bedingt aktiv, solange auch eine Zielobjektinstanz aktiv ist, ohne einen starken Verweis auf die Zielinstanz darzustellen.

public value class DependentHandle : IDisposable
public struct DependentHandle : IDisposable
type DependentHandle = struct
    interface IDisposable
Public Structure DependentHandle
Implements IDisposable
Vererbung
DependentHandle
Implementiert

Hinweise

Ein DependentHandle Wert mit einem bestimmten Objekt instance als Ziel führt nicht dazu, dass das Ziel am Leben bleibt, wenn keine anderen starken Verweise darauf vorhanden sind. Dies wird jedoch für das abhängige Objekt instance, solange das Ziel aktiv ist.

Die Verwendung dieses Typs entspricht vom Konzept her einem schwachen Verweis auf ein bestimmtes Zielobjekt instance A, wobei dieses Objekt ein Feld oder eine Eigenschaft (oder einen anderen starken Verweis) auf ein abhängiges Objekt instance B aufweist.

Der DependentHandle Typ ist nicht threadsicher, und Consumer sind dafür verantwortlich, sicherzustellen, dass Dispose() nicht gleichzeitig mit anderen APIs aufgerufen wird. Wenn dies nicht geschieht, führt dies zu nicht definiertem Verhalten.

Die IsAllocatedEigenschaften , Target, Dependentund TargetAndDependent sind stattdessen threadsicher und können sicher verwendet werden, wenn Dispose() nicht gleichzeitig aufgerufen wird.

Konstruktoren

DependentHandle(Object, Object)

Initialisiert eine neue instance der DependentHandle Struktur mit den angegebenen Argumenten.

Eigenschaften

Dependent

Ruft das abhängige Objekt ab, das für das aktuelle Handle instance, oder legt es fest.

IsAllocated

Ruft einen Wert ab, der angibt, ob diese instance mit DependentHandle(Object, Object) erstellt wurde und noch nicht verworfen wurde.

Target

Ruft das Zielobjekt instance für das aktuelle Handle ab oder legt es fest. Das Ziel kann erst auf einen null Wert festgelegt werden, nachdem die DependentHandle instance erstellt wurde. Dies führt dazu, dass Dependent auch die Rückgabe null beginnt und für die Sammlung berechtigt ist, auch wenn das vorherige Ziel noch vorhanden ist.

TargetAndDependent

Ruft die Werte von und TargetDependent (falls verfügbar) als atomischen Vorgang ab. Das heißt, selbst wenn Target gleichzeitig auf nullfestgelegt ist, gibt der Aufruf dieser Methode entweder für ziel- und abhängige Werte zurück null oder gibt beide vorherigen Werte zurück. Wenn Target und Dependent in diesem Szenario stattdessen sequenziell verwendet würden, wäre es möglich, das vorherige Ziel manchmal erfolgreich abzurufen, aber dann das abhängige nicht abzurufen.

Methoden

Dispose()

Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

Gilt für: