你应该发布一些相关的代码。没有它,我只是猜测。然而,这里有一个猜测:
您在这里跟随错误的模式。由于您的类维护实现IDisposable的对象,因此您的类应该实现IDisposable本身。然后,您的访问者应该改为调用你的类的Dispose方法,他们就完成了,当它:
using System;
using System.Data.SqlClient;
public static class ConnectionManager
{
private static readonly SqlConnection _connection =
new SqlConnection("connectionString");
public static SqlConnection Connection { get { return _connection; } }
}
public class HoldsCommands : IDisposable
{
private readonly SqlCommand _commandOne = new SqlCommand("Command1");
private readonly SqlCommand _commandTwo = new SqlCommand("Command2");
public void DoSomethingWithAConnection()
{
}
public void Dispose()
{
if (_commandOne != null)
{
try
{
_commandOne.Dispose();
}
catch (Exception)
{
}
}
if (_commandTwo != null)
{
try
{
_commandTwo.Dispose();
}
catch (Exception)
{
}
}
}
}
那么你的来电者会叫你这个样子:
using (var commands = new HoldsCommands()) {
commands.DoSomethingWithAConnection();
}
路加福音格文说,你可能如果您只是想保存数据库连接,则不需要静态ConnectionManager类。 .NET为你处理这个问题。
我想你需要提供更多的信息/代码示例 – RichardOD 2009-06-20 15:28:10