AppDomain.IsFinalizingForUnload Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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.