我有一个 C# 控制台应用程序,代码如下:
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 处)时,我很快会在 SSMS 进程列表中看到一个进程,其应用程序名称为“.Net SqlClient Data Provider”,其数据库为“master”。
当我按 F5 到第二个断点时,我期望该进程将从进程列表中删除,因为此时我已经关闭了 SqlConnection。但是,该进程将保留在列表中,直到应用程序关闭。
我的假设是该进程保留在列表中,因为我的连接并未真正关闭。如果我的假设是正确的,那么我还需要做什么来关闭连接?如果我的假设不准确,那么为什么我的进程仍然列出,以及如何测试我的连接是否确实正确关闭?
Thanks.
据我所知 - 当您使用 Close 或 Dispose 方法时 - 您只是将连接返回到连接池以供重用(连接不会真正关闭) - 您可以获得更多信息here http://msdn.microsoft.com/en-us/library/8xx3tyca%28v=vs.80%29.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)