3

我在另一台服务器上读取和写入数据到Sql Server,因此我需要打开很多SqlConnection,我在读取或写入完成后关闭它们,但有时我无法连接到服务器但在我重新启动服务器后一切正常,我想这是因为有些SqlConnection是开放的,如果存在的话,有什么办法可以找到所有这些吗?

4

1 回答 1

4

最简洁的答案是不”。您可以这样做的唯一方法是显式添加您自己的跟踪代码,但是您实际上正在做的是冒着持有它们更长时间的风险,而且您可能会忘记将它添加到您所在的两个地方已经忘记关闭东西了。

这里首选的“修复”是:停止担心关闭事物,using而是启动它们。如果您using 每次触摸连接时都使用,则不能忘记释放它。

using(var conn = whatever.GetOpenConnection()) {
    // ... do stuff
} // <=== here it will be disposed for us automatically, success or failure
  // and disposable includes Close()

这同样适用于任何实现IDisposable. 对于 ADO.NET,这也包括命令和读取器。

于 2013-07-01T11:31:16.657 回答