C#3.5中,Windows 7+釋放註冊表句柄更快
看看下面的代碼,例如:
using (RegistryKey regKey = Registry.Users.OpenSubKey(regKeyString, true))
{
if (polRegKey.GetValue("Foo") == null)
polRegKey.CreateSubKey("Foo");
}
現在讓我們假設我執行該代碼每一秒,在一個循環。
當我使用Process Explorer查看正在運行的進程時,我看到的是正在生成的該註冊表項的新句柄,但未及時銷燬。相反,我看到的是每秒創建一個新的句柄,然後在大約20秒後,幾乎所有句柄的大部分都被同時銷燬。這是我期望從垃圾回收器中得到的那種行爲。我錯在認爲C#的using
語句會自動處理對象嗎?它似乎是以一種非常懶惰的方式來做,如果它真的在做它。