你應該發佈一些相關的代碼。沒有它,我只是猜測。然而,這裏有一個猜測:
您在這裏跟隨錯誤的模式。由於您的類維護實現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