WeakReference-Klasse

Stellt einen schwachen Verweis dar. Dieser verweist auf ein Objekt, wobei dieses weiterhin an den Garbage Collector übergeben werden kann.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class WeakReference
    Implements ISerializable
'Usage
Dim instance As WeakReference
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class WeakReference : ISerializable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class WeakReference : ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class WeakReference implements ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public class WeakReference implements ISerializable

Hinweise

Der Garbage Collection-Mechanismus der Common Language Runtime gibt Objekte im Speicher frei, auf die nicht zugegriffen werden kann. Auf ein Objekt kann nicht mehr zugegriffen werden, wenn alle direkten und indirekten Verweise auf dieses Objekt ungültig sind (z. B. wenn diese Verweise auf NULL (Nothing in Visual Basic) festgelegt werden). Ein Verweis auf ein Objekt, auf das zugegriffen werden kann, wird als starker Verweis bezeichnet.

Ein schwacher Verweis verweist ebenfalls auf ein Objekt, auf das zugegriffen werden kann und das als Ziel bezeichnet wird. Ein starker Verweis auf das Ziel wird erstellt, indem einer Variablen den Wert der Target-Eigenschaft zugewiesen wird. Wenn jedoch keine starken Verweise auf das Ziel vorhanden sind, wird dieses zum Kandidaten für die Garbage Collection, obwohl noch ein schwacher Verweis auf dieses Objekt vorhanden ist.

Zwischen dem Zeitpunkt, zu dem ein Objekt zum Kandidaten für die Garbage Collection wird, und dem Zeitpunkt, an dem es übergeben wird, kann es eine Verzögerung geben. Wenn der Benutzer versucht, das Ziel nach seiner Übergabe abzurufen, wird lediglich ein NULL-Verweis abgerufen. Wenn das Ziel noch nicht übergeben wurde, wird ein gültiger Verweis abgerufen.

Die Garbage Collection ruft die Finalize-Methode eines Objekts auf (d. h., sie führt eine Finalisierung aus), wenn eine solche Methode vorhanden ist und sie eine entsprechende Anweisung erhält. Bei Abschluss der Finalisierung wird InvalidOperationException ausgelöst, wenn der Benutzer versucht, mit der IsAlive-Eigenschaft oder der Target-Eigenschaft des aktuellen WeakReference-Objekts auf dieses Objekt zuzugreifen.

Terminologie

Es empfiehlt sich, mit der verwendeten Fachsprache vertraut zu sein, mit deren Hilfe Objekte und die Garbage Collection beschrieben werden. Ein Objekt wird als aktiv bezeichnet, wenn es verwendet wird und darauf zugegriffen werden kann. Ein Objekt wird als deaktiviert bezeichnet, wenn es nicht verwendet wird und ein Kandidat für die Garbage Collection ist. Wenn ein starker Verweis für ein deaktiviertes Objekt festgelegt wird, wird das Objekt wieder aktiv, und es wird wieder als verfügbar bezeichnet.

Ein WeakReference-Objekt kann angeben, ob der Verweis auf sein Ziel nach dem Finalisieren bestehen bleibt (d. h., ob der schwache Verweis verfolgen soll, wie das Ziel wieder zugänglich gemacht wird). Ein schwacher Verweis, der nicht verfolgt, wie das Ziel wieder zugänglich gemacht wird, heißt kurzer schwacher Verweis. Ein schwacher Verweis, der verfolgt, wie das Ziel wieder zugänglich gemacht wird, heißt langer schwacher Verweis.

Leistungsaspekte

Die WeakReference-Klasse wird häufig in Codebeispielen verwendet, in denen im Cache von WeakReference-Objekten Verweise auf eine Reihe von Objekten verwaltet werden, die von einer Anwendung verwendet werden. Wenn das Objekt z. B. beendet wird, das es aus dem Gültigkeitsbereich fällt, kann die Garbage Collection den zugeordneten Speicher trotzdem wieder verfügbar machen.

In diesem Beispiel wird ein sehr gutes Speicherverwaltungsschema veranschaulicht. Dieses ist aber irreführend, da die WeakReference-Klasse nicht wie eine automatische Lösung für Speicherverwaltungsprobleme behandelt werden kann. Sie müssen trotzdem Regeln für die Anwendung erstellen, also eine Zwischenspeicherungsrichtlinie über die beizubehaltenden bzw. zu entfernenden Einträge im Cache.

.NET Framework-Sicherheit

Vererbungshierarchie

System.Object
  System.WeakReference

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

WeakReference-Member
System-Namespace
GC-Klasse