我怀疑我们的一个应用程序中使用的数据库连接并不总是关闭。我去看了代码,发现了一个 DataProvider
类,它有 SqlConnection
对象。连接在此类的构造函数中打开,并在其 Dispose
方法中关闭(不要判断,我知道保持打开的连接是邪恶的,这不是我的代码,也不是重点无论如何问题)。 Dispose
方法是这样实现的:
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
if (_conn != null)
_conn.Close();
}
_disposed = true;
}
}
问题是:
是否始终保证连接关闭?
这个代码对吗?
我认为应该调用 _conn.Dispose()
- 我说得对吗,它会影响不关闭连接吗(可能不会)?
最佳答案
Dispose 永远不会自动调用。
连接不会关闭,直到您的对象的 Dispose 方法被显式调用,或者如果您的类在 using() block 中使用
更安全的方法是在终结器中调用 dispose 方法,并确保在调用 Dispose 方法时抑制终结器。
This article提出实现该模式的正确方法
希望对您有所帮助!
塞德里克
关于c# - 在 Dispose 方法中关闭数据库连接是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1016800/