我有下面的代碼C#控制檯應用程序:爲什麼我的SqlConnection在關閉之後仍保留在SSMS Processes列表中?
using (var cn = new SqlConnection())
{
cn.ConnectionString = "Data Source=localhost;Integrated Security=True;Persist Security Info=False";
cn.Open();
System.Console.WriteLine("past open");
}
System.Console.ReadLine();
在運行時,我設置兩個斷點。一個在WriteLine,一個在ReadLine。我還打開了Sql Server Management Studio(SSMS)並正在監視活動監視器的進程列表。
當我運行應用程序並命中我的第一個斷點(在WriteLine)時,我很快看到一個Process,在SSMS Processes列表中,其應用程序名稱爲「.Net SqlClient Data Provider」,其數據庫爲「master」 。
當我F5到第二個斷點時,我的期望是該進程將從進程列表中刪除,因爲我已經通過該點關閉了我的SqlConnection。但是,該過程將保留在列表中,直到應用程序關閉。
我的假設是該進程仍然在列表中,因爲我的連接並不真正關閉。如果我的假設是準確的,那麼我還需要做些什麼才能關閉連接?如果我的假設不準確,那麼爲什麼我的流程仍然列出,我如何測試我的連接是否真正關閉?
謝謝。
感謝DanNsk。順便說一句,MSDN頁面表示,池中的連接在「閒置」很長時間後會從池中移除。你知道是否有辦法控制空閒超時? – Craig
這是不可配置的(或甚至可讀超時)。 – DanNsk