C sharp - Destrucción de objetos formalmente

 
Vista:

Destrucción de objetos formalmente

Publicado por Diego Campillo (13 intervenciones) el 10/02/2005 09:42:24
Después de usar un objeto, yo lo cierro, caso de una conexión de una base de datos, pero ¿estaría más optimizado mi código si invoco después un Dispose para liberar recursos? o mejor lo dejo que lo haga el recolecctor de objetos.

¿Para que sirve Finalize? ¿Qué diferencia hay? ¿Cuándo debo usarlo?

Adjunto ejemplo de como procedo actualmente:

OdbcConnection ConexionBD;
OdbcCommand ComandoBD;

ConexionBD = new OdbcConnection();
ConexionBD.ConnectionString="Driver={SQL Server};Server=30.0.0.22;Database=northwind;Uid=sa;Pwd=xx;";
ConexionBD.Open();

ComandoBD = new OdbcCommand();
ComandoBD.CommandText="INSERT INTO Customers (CustomerID, CompanyName) Values('XXXXX', 'Pepito S.L.')";
ComandoBD.Connection = ConexionBD;
ComandoBD.ExecuteNonQuery();
ComandoBD.Connection.Close();

ConexionBD.Close();
ConexionBD.Dispose(); <==== ¿ Sería interesante escribir esto ?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Destrucción de objetos formalmente

Publicado por Edgar (278 intervenciones) el 10/02/2005 13:07:41
Hola

Puedes hacerlo, pero de eso se deberia encargar el recolector de basura.

Si quieres saber sobre el metodo FInalize, leete la documentación del metodo en el MSDN, aqui te doy la dirección

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemobjectclassfinalizetopic.asp

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:Destrucción de objetos formalmente

Publicado por Yamil Bracho (1164 intervenciones) el 10/02/2005 14:05:11
CUando no necesites un objeto puedes marcalo como "desechable" asignandole null o llamando al metodo Dispose().
En su momento el garbage collector limpiara de memoria esas variables pero no puedes ejecutarlo cuando lo desees
Un método Finalize actúa como medida de seguridad para limpiar los recursos en caso de que no se llame al método Dispose. Sólo debe implementar un método Finalize para limpiar recursos no administrados
No se debe implementar un método Finalize para objetos administrados, porque el recolector de elementos no utilizados limpia los recursos administrados automáticamente. De forma predeterminada, el método Object.Finalize no realiza ninguna acción.
Sin embargo puedes usar la sintaxis de destructor para hacer cualquier limpieza que necesites hacer como por ejemplo cerrar una conexion a una BD, cerrar un archivo, liberar arreglos de memoria, etc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Destrucción de objetos formalmente

Publicado por Diego Campillo (13 intervenciones) el 11/02/2005 11:50:04
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar