|
本文章是由人工翻譯。 將指標移到文章內的文字上方即可查看原文。
|
譯文
原文
|
Object.Finalize 方法
更新:2010 年 12 月
組件: mscorlib (在 mscorlib.dll 中)
注意事項 |
|---|
完成項在記憶體回收期間執行的確切時間尚未定義。 不保證在任何指定時間都會釋放資源,除非呼叫 Close 方法或 Dispose 方法。 不保證兩個物件的完成項會以任何特定的順序執行,即使其中一個物件參考另一個物件。 也就是說,如果物件 A 具有物件 B 的參考,並且兩者都具有完成項,則在物件 A 的完成項啟動時,物件 B 可能已經最終處理。 未指定執行完成項的執行緒。
另一個完成項永遠阻斷 (進入無限迴圈,嘗試取得永遠無法取得的鎖定等等)。 因為執行階段嘗試執行完成項至完成,所以,如果某一完成項永遠阻斷,則可能不會呼叫其他完成項。 處理序終止,未提供執行階段清除的機會。 在這個狀況下,執行階段的第一個處理序終止的告知為 DLL_PROCESS_DETACH 告知。
using System; using System.Diagnostics; public class ExampleClass { Stopwatch sw; public ExampleClass() { sw = Stopwatch.StartNew(); Console.WriteLine("Instantiated object"); } public void ShowDuration() { Console.WriteLine("This instance of {0} has been in existence for {1}", this, sw.Elapsed); } ~ExampleClass() { Console.WriteLine("Finalizing object"); sw.Stop(); Console.WriteLine("This instance of {0} has been in existence for {1}", this, sw.Elapsed); } } public class Demo { public static void Main() { ExampleClass ex = new ExampleClass(); ex.ShowDuration(); } } // The example displays output like the following: // Instantiated object // This instance of ExampleClass has been in existence for 00:00:00.0011060 // Finalizing object // This instance of ExampleClass has been in existence for 00:00:00.0036294
Windows 7, Windows Vista SP1 (含) 以後版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (不支援伺服器核心), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心), Windows Server 2003 SP2
.NET Framework 並不支援各種平台的所有版本。如需支援的版本的清單,請參閱.NET Framework 系統需求。
注意事項