在以下情况下,是否没有必要使用db.Close()?
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
db.Close();
}发布于 2012-08-20 07:54:49
如果使用using子句,是否需要关闭DbConnection?
不,如果使用using子句,则不需要关闭DbConnection?
和
是的,在这里没有必要,因为当using的作用域结束时,连接将释放所有内存。
由于DBConnection实现了IDisposable接口,所以在DBConnection的Dispose方法中存在关闭函数。
但是,如果一些线是在闭线之后,那么它是有用的。
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
db.Close(); //Useless
}但在这里它是有用的
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
db.Close(); //Useful
// Some more code
}在这种情况下,你可以
using (DbConnection db = GetDbConnection())
{
// do data-access stuff
// ...
}
// Some more code which was previously inside using section.发布于 2012-08-20 08:03:08
为了确保我已经检查了代码:)
protected override void Dispose(bool disposing)
{
if (disposing)
{
this._userConnectionOptions = (DbConnectionOptions) null;
this._poolGroup = (DbConnectionPoolGroup) null;
this.Close();
}
this.DisposeMe(disposing);
base.Dispose(disposing);
}这是SqlConnection的实现,它继承了DbConnection。如您所见,有this.Close()方法:)
发布于 2012-08-20 07:54:04
据我所知,当调用Dispose()方法时,将自动执行Close()。
所以这里没有必要使用db.Close();。
https://stackoverflow.com/questions/12033998
复制相似问题