gpt4 book ai didi

c# - 正确处理 DbConnection

转载 作者:行者123 更新时间:2023-11-30 19:35:12 26 4
gpt4 key购买 nike

我有一个名为 DatabaseHelper 的类,它包装了一个 DbConnection。为 using 语句设置此类的正确方法是什么?我已经实现了 IDisposible,但我不确定应该在何时何地调用 Connection.Close() 或 Connection.Dispose()。

当我在我自己的 Dispose() 方法中简单地调用 Connection.Dispose() 时,我有时会从我的 DbConnection 对象中得到一个 SocketException。我认为这是因为旧连接保持打开状态,但没有附加到异常的详细信息,所以我不能确定。

最佳答案

从您的处置方法中调用 connection.Dispose()。您应该查看实现 IDisposable 的标准模式,它超越了简单地实现 IDisposable 接口(interface)并允许处理非托管对象等:

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources.
}

// There are no unmanaged resources to release, but
// if we add them, they need to be released here.
}
disposed = true;

// If it is available, make the call to the
// base class's Dispose(Boolean) method
base.Dispose(disposing);
}

(摘自 http://msdn.microsoft.com/en-us/library/system.idisposable.aspx )。

关于c# - 正确处理 DbConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386762/

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