Я очищаю DataReaders в старом проекте .NET 1.1, который я унаследовал.
Предыдущий разработчик закодировал уровень доступа к данным таким образом, что большинство методов DAL возвращали SqlDataReaders (таким образом, вызывающему процессу оставалось только правильно вызывать методы .Close () или .Dispose ()).
Однако я столкнулся с ситуацией, когда вызывающая сторона не перехватывает возвращенный SqlDataReader (и, следовательно, неправильно его утилизирует). Смотрите код ниже:
Метод доступа к данным:
Public Shared Function UpdateData() As SqlDataReader
...
drSQL = cmdSQL.ExecuteReader(CommandBehavior.CloseConnection)
Return drSQL
End Function
Телефонный код:
...
DataAccessLayer.UpdateData()
...
Как видите, вызывающий метод не получает / не перехватывает возвращенный SqlDataReader. Так что же происходит? Это SqlDataReader все еще там и открыт? Или это автоматически собирает мусор, так как ничто не обращается к нему?
Я не мог придумать способ отладки и проверки этого. Если у кого-то есть какие-либо идеи или предложения, это было бы замечательно.