[英]Does my .Net SqlConnection object close on its own
我们有一个简单的循环过程,可以在一些数据行上做一些事情。
提交更改时,新行和 SqlConnection object 被传递给处理行更改或添加的方法。
该过程在 10 次中运行 5 次,一切正常。 SqlConnection 在循环开始时打开并在循环后关闭,但有时它确实在循环期间关闭。 代码在循环期间的任何时候都不会调用 close() 。
所以我的问题是为什么它可能会自行关闭。
干杯
作为参考,代码类似于以下内容
connection.Open();
foreach(DataRow row in rows)
{
if(rubbish)
{
//make some changes and save
DatabaseConnector.Save(sqlStringToExecute, connection);
}
}
connection.Close();
连接不会自行关闭,不会。 连接关闭的主要时间是:
using
语句)Close()
CommandBehaviour.CloseConnection
行为执行命令如果您实际上遇到异常(可能是超时或死锁),在using
块中弹跳(处理它),并且可能吞下异常,则第一种是很有可能的。
第三种在善意的代码中是非常可能的。
要进行调查,您可以订阅StateChange
事件并在处理程序中添加断点; 然后通过堆栈跟踪向后走,您将确切知道是谁在关闭它,以及为什么要关闭它。 如果您使用超出此代码的 scope 的连接,请记得取消订阅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.