我正在清理我继承的旧 .NET 1.1 项目中的 DataReader。
以前的开发人员以大多数 DAL 方法返回 SqlDataReaders 的方式对数据访问层进行编码(因此由调用者正确调用 .Close() 或 .Dispose() 方法)。
不过,我遇到过一种情况,调用者没有捕获返回的 SqlDataReader (因此没有正确处理它)。请参阅下面的代码:
数据存取方法:
Public Shared Function UpdateData() As SqlDataReader
...
drSQL = cmdSQL.ExecuteReader(CommandBehavior.CloseConnection)
Return drSQL
End Function
调用代码:
...
DataAccessLayer.UpdateData()
...
如您所见,调用方法不会接收/捕获返回的 SqlDataReader。那么会发生什么呢? SqlDataReader 仍然存在并打开吗?或者它会自动收集垃圾,因为没有任何东西可以解决它?
我想不出一种方法来调试和测试它。如果有人有任何想法或建议,那就太好了。
我相信它会被关闭,但直到垃圾收集器开始处理它,这可能不会持续很长时间......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)