AppDomain.IsFinalizingForUnload 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指示這個應用程式定義域是否正在卸載,以及其包含的物件是否正在由 Common Language Runtime 進行最終處理。
public:
bool IsFinalizingForUnload();
public bool IsFinalizingForUnload ();
member this.IsFinalizingForUnload : unit -> bool
Public Function IsFinalizingForUnload () As Boolean
傳回
如果這個應用程式定義域正在卸載且 Common Language Runtime 已開始叫用完成項,則為 true
;否則為 false
。
備註
物件的最終處理方法可讓您在垃圾收集物件之前執行任何必要的清除作業。 完成之後,物件可以存取,但處於無效狀態,因此無法使用。 最後,垃圾收集會完成並回收 物件。
物件的最終化方法會在下列其中一種情況中呼叫:在垃圾收集期間、Common Language Runtime 關閉時,或卸載包含物件的應用程式域時。 方法 IsFinalizingForUnload 只會在最後一個案例中傳回 true
;如果常式垃圾收集或 CLR 關機的結果,則不會傳回 true
。
注意
若要判斷最終處理是否因為 CLR 關機,請使用 Environment.HasShutdownStarted 屬性。 如果最終處理是因為應用程式域遭到卸載或 CLR 關閉,則會傳回 true
。
在網域卸載期間于最終處理方法中執行時,您可能會想要存取靜態欄位所參考的另一個物件,並且具有最終處理方法。 不過,您無法可靠地這麼做,因為存取的物件可能已經完成。
注意
此規則的例外狀況是 Console 類別,其中包含參考資料流物件的靜態欄位,但特別實作,因此您一律可以寫入系統主控台,即使在網域卸載或系統關機期間也一樣。
在物件的最終化方法中使用這個方法,判斷包含物件的應用程式域是否正在卸載。 如果是這種情況,您就無法可靠地存取具有最終化方法且由靜態欄位參考的任何物件。