2

我正在清理我继承的旧 .NET 1.1 项目中的 DataReaders。

之前的开发人员对数据访问层进行了编码,使得大多数 DAL 方法都返回 SqlDataReaders(因此将其留给调用者来正确调用 .Close() 或 .Dispose() 方法)。

但是,我遇到了一种情况,调用者没有捕获返回的 SqlDataReader (因此没有正确处理它)。请看下面的代码:

数据访问方法:

Public Shared Function UpdateData() As SqlDataReader
   ...

   drSQL = cmdSQL.ExecuteReader(CommandBehavior.CloseConnection)

   Return drSQL

End Function

调用代码:

...
DataAccessLayer.UpdateData()
...

如您所见,调用方法没有接收/捕获返回的 SqlDataReader。那么会发生什么?那个 SqlDataReader 还在那里并打开吗?或者它会自动收集垃圾,因为没有任何东西可以解决它?

我想不出调试和测试的方法。如果有人有任何想法或建议,那就太好了。

4

1 回答 1

4

我相信它会被关闭,但直到垃圾收集器得到它,这可能不会持续很长时间......

于 2008-10-29T16:09:12.207 回答