读者关闭并处置

时间:2011-10-06 06:08:33

标签: ado.net sqldatareader

请查看代码。我们有一个像这样的方法返回读者。即

public IRecordsReader GetValues()
{
   IRecordsReader TestReader.....

   return TestReader;
}

我们在另一个方法中调用该方法

IRecordsReader ResultReader = GetValues();
ResultReader.Close();
ResultReader.Dispose();

即我们正在关闭并处置该读者。

我怀疑是我们没有在GetValues()方法中正确关闭TestReader。那么它是否会导致任何连接池问题?请提出你的建议。

1 个答案:

答案 0 :(得分:1)

您可能应该使用SqlDataReader包装它,以便它自动关闭并处置IDisposable对象。

如下所示

using(IRecordsReader ResultReader = GetValues())
{
//do your stuff
}
//resultReader is closed and disposed from now

更多信息

因为你这样做

public IRecordsReader GetValues()
{
   IRecordsReader TestReader.....

   return TestReader;
}

和这个

IRecordsReader ResultReader = GetValues()

这就是你实际做的事情

IRecordsReader ResultReader = TestReader

所以你间接关闭/处置TestReader实例。你懂了?。把它放在代码中,尝试你会知道:)

答案

OP询问 - So whether it will cause any connection pool issues? Please give your suggestions.

除非未超出您的连接限制,否则您不会遇到问题。但是,由于您正在关闭并处置资源,因此您不会遇到任何问题:)