Ho il sospetto che una connessione al database utilizzata in una delle nostre applicazioni non sia sempre chiusa. Sono andato a vedere il codice e ho trovato una classe DataProvider
che ha l'oggetto SqlConnection
. La connessione è aperta nel costruttore di questa classe e chiusa nel suo metodo Dispose
(non giudicarlo, so che mantenere una connessione aperta è malvagio, non è solo il mio codice e non è comunque il punto della questione). Il metodo Dispose
è implementato in questo modo:La chiusura di una connessione al database nel metodo Dispose è corretta?
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
if (_conn != null)
_conn.Close();
}
_disposed = true;
}
}
La domanda è:
non garantisce sempre che la connessione è chiusa?
Questo codice è giusto?
Penso che ci dovrebbe essere _conn.Dispose()
chiamato - ho ragione e potrebbe influenzare non chiudendo la connessione (probabilmente no)?
Se si sospetta un sospetto controllando utilizzando i contatori delle prestazioni. – RichardOD
Un valore chiave da verificare è NumberOfPooledConnections. – RichardOD