En el código, digamos que tenemos:Recolección de basura, ¿debemos confiar en ella?
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString()))
{
cn.Open();
// Set all previous settings to inactive
using (SqlCommand cmd = new SqlCommand("UPDATE tblSiteSettings SET isActive = 0", cn))
{
cmd.ExecuteNonQuery();
}
cn.Close();
}
El cn.close
no se requiere técnicamente como la recolección de basura se hará cargo de la conexión para nosotros.
Sin embargo, siempre me gusta cerrarlo de todos modos y no confiar en la recolección de basura. ¿Es esto malo? ¿Una pérdida de tiempo? ¿O se considera una buena práctica no confiar en la automatización?
Gracias por su opinión y opiniones con anticipación. Lo marcaré como wiki de la comunidad, ya que probablemente sea subjetivo.
ya que está utilizando una instrucción 'using',' cn.Close() 'es completamente redundante. –
en su ejemplo, IDispose/using() limpia la conexión, no el GC.Es una práctica buena (esencial) controlar el tiempo de vida de recursos como conexiones y archivos. GC debe confiar solo en los recursos de memoria. – tenfour