gpt4 book ai didi

c# - 在 Dispose 方法中关闭数据库连接是否正确?

转载 作者:太空狗 更新时间:2023-10-29 22:29:27 27 4
gpt4 key购买 nike

我怀疑我们的一个应用程序中使用的数据库连接并不总是关闭。我去看了代码,发现了一个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com