Freigeben über


AppDomain.IsFinalizingForUnload Methode

Definition

Gibt an, ob diese Anwendungsdomäne entladen wird und ob die darin enthaltenen Objekte durch die Common Language Runtime finalisiert werden.

public:
 bool IsFinalizingForUnload();
public bool IsFinalizingForUnload ();
member this.IsFinalizingForUnload : unit -> bool
Public Function IsFinalizingForUnload () As Boolean

Gibt zurück

Boolean

true, wenn die Anwendungsdomäne entladen wird und die Common Language Runtime mit dem Aufrufen von Finalizers begonnen hat, andernfalls false.

Hinweise

Die Finalisierungsmethode für ein Objekt bietet Ihnen die Möglichkeit, alle erforderlichen Bereinigungsvorgänge auszuführen, bevor das Objekt garbage gesammelt wird. Nach Abschluss der Fertigstellung ist das Objekt barrierefrei, aber in einem ungültigen Zustand und daher nicht mehr verwendbar. Schließlich schließt die Garbage Collection das Objekt ab und ruft das Objekt zurück.

Die Endisierungsmethode eines Objekts wird in einem der folgenden Situationen aufgerufen: während der Garbage Collection, wenn die allgemeine Sprachlaufzeit heruntergefahren wird oder wenn die Anwendungsdomäne, die das Objekt enthält, entladen wird. Die IsFinalizingForUnload Methode gibt nur im letzten Fall zurück true . Sie wird nicht zurückgegeben true , wenn die Fertigstellung aus der routinelichen Garbage Collection oder vom Herunterfahren von CLR resultiert.

Hinweis

Verwenden Sie die Environment.HasShutdownStarted Eigenschaft, um zu ermitteln, ob die Finalisierung aufgrund des CLR-Herunterfahrens erfolgt. Es wird zurückgegeben true , wenn die Finalisierung auf eine Anwendungsdomäne zurückzuführen ist, die entladen wird oder der CLR heruntergefahren wird.

Während der Ausführung in Ihrer Endisierungsmethode beim Entladen der Domäne möchten Sie möglicherweise auf ein anderes Objekt zugreifen, auf das von einem statischen Feld verwiesen wird und über eine Finalisierungsmethode verfügt. Sie können dies jedoch nicht zuverlässig tun, da das zugriffe Objekt möglicherweise bereits abgeschlossen wurde.

Hinweis

Eine Ausnahme dieser Regel ist die Klasse, die Console statische Felder enthält, die auf Datenstromobjekte verweisen, aber speziell implementiert werden, damit Sie immer in die Systemkonsole schreiben können, auch während der Domänenabladung oder beim Herunterfahren des Systems.

Verwenden Sie diese Methode in der Endisierungsmethode eines Objekts, um zu bestimmen, ob die Anwendungsdomäne, die das Objekt enthält, entladen wird. Wenn dies der Fall ist, können Sie nicht zuverlässig auf ein Objekt zugreifen, das über eine Finalisierungsmethode verfügt und von einem statischen Feld referenziert wird.

Gilt für

Siehe auch