SqlDataReader: In diesem Szenario wird der Leser geschlossen werden?
-
05-07-2019 - |
Frage
Ich bin die Reinigung der Datareader in einem alten .NET 1.1-Projekt, die ich geerbt.
Der bisherige Entwickler die Datenzugriffsschicht so codiert, dass die meisten der DAL Methoden SqlDataReaders zurückgegeben (also es dem Anrufer zu verlassen ordnungsgemäß aufrufen, um die .Close () oder .Dispose () -Methode).
Ich habe auf eine Situation kommen, obwohl, wo ein Anrufer nicht, um die zurück SqlDataReader zu kontrollieren (und daher Entsorgung nicht davon richtig). Sehen Sie den Code unten:
Datenzugriffsmethode:
Public Shared Function UpdateData() As SqlDataReader
...
drSQL = cmdSQL.ExecuteReader(CommandBehavior.CloseConnection)
Return drSQL
End Function
Telefonvorwahl:
...
DataAccessLayer.UpdateData()
...
Wie Sie sehen können, wird die Rufmethode nicht erhalten / die zurück SqlDataReader fangen. Also, was passiert? Ist das SqlDataReader immer noch da draußen und offen? Oder macht es automatisch erhalten Müll gesammelt, da nichts es adressiert?
Ich konnte nicht einen Weg zu debuggen denken und testen diese. Wenn jemand irgendwelche Ideen oder Vorschläge hat das wäre toll.
Lösung
ich glaube, dass es geschlossen wird erhalten, aber erst, wenn die Müllsammler bekommen ‚rund um sie, die nicht für eine sehr lange Zeit sein können ...