Warum SqlClient.SqlDataReader Close () Methode trotzdem aufrufen?

Ist der SqlClient.SqlDataReader ein .NET-verwalteten Objekt oder nicht?
Warum haben wir Sie zum aufrufen der Methode Close() explizit zu schließen, eine offene Verbindung?
Sollte läuft nicht out-of-scope für ein Objekt automatisch schließen?
Sollte das nicht garbage collector-reinigen Sie es sowieso?

Bitte helfen Sie mir zu verstehen, was ist die beste Praxis hier.

Habe ich gesehen, dass eine Frage im Zusammenhang mit hier und es zeigt das Problem, das ich habe mit einer web-Anwendung. Das Problem ist, dass wir verbindungen zur Verfügung. Die detaillierte Fehlermeldung ist hier:

Exception: System.InvalidOperationException
Message: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
Source: System.Data 

at  System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction)
at  System.Data.SqlClient.SqlConnection.Open()

Um dies zu beheben, musste ich explizit schließen Sie alle SQLDataReader-Objekten.

Ich bin mit .NET Framework 3.5

InformationsquelleAutor der Frage Julius A | 2008-10-30

Schreibe einen Kommentar