Controlar el dispose de objetos

25/05/2006 - 16:22 por anonimous | Informe spam
Saludos a todos.

Sabemos que (o por lo menos yo estoy convencido) que el Collector de .Net
no libera de manera eficiente la memoria.

Por lo que quisiera ver de que manera puedo controlar que dentro del
código ningún programador se olvide de incluir esto en las clases que
utilicen objetos que implementen la interfaz dispose.

Sabe alguien como puedo hacer esto sin tener que "leer" las lineas de
código de manera visual sino ejecutar un programa (aún cuando tenga que
desarrollarlo yo).


Mil gracias su información.


Atte:

Wilson

Preguntas similare

Leer las respuestas

#1 Benton
25/05/2006 - 16:34 | Informe spam
Sabemos que (o por lo menos yo estoy convencido) que el Collector de .Net
no libera de manera eficiente la memoria.

Por lo que quisiera ver de que manera puedo controlar que dentro del
código ningún programador se olvide de incluir esto en las clases que
utilicen objetos que implementen la interfaz dispose.



En C#, la palabra clave "using" ayuda a que no se te olvide ejecutar
Dispose() al terminar de usar un objeto, por ejemplo:

using (DataTable tabla = new DataTable())
{
// Dentro de éste bloque se trabaja con el objeto tabla en forma normal
}

Cuando la ejecución sale del bloque, automáticamente se ejecuta Dispose()
para el objeto tabla, sin necesidad de escribirlo. Si te acostumbras a
aplicar "using" en todos los objetos que implementan IDisposable, estás
protegido.

Saludos,

-ED
Respuesta Responder a este mensaje
#2 Octavio Hernandez
25/05/2006 - 17:04 | Informe spam
Wilson,

Sabemos que (o por lo menos yo estoy convencido) que el Collector de .Net
no libera de manera eficiente la memoria.



Sin ánimo de discutir, el recolector sí es muy eficiente y no tiene nada que
ver con lo que preguntas.
IDisposable no es un mecanismo para recuperar la memoria que utilizan los
objetos, sino para liberar
los recursos que éstos consumen tan pronto dejamos de necesitarlos.

Por lo que quisiera ver de que manera puedo controlar que dentro del
código ningún programador se olvide de incluir esto en las clases que
utilicen objetos que implementen la interfaz dispose.



Desgraciadamente no hay nada para eso en C# (al menos hasta ahora), los
diseñadores del lenguaje no
lo consideraron necesario o conveniente. Otros lenguajes para .NET como
C++/CLI o Delphi .NET
sí ofrecen mecanismos para que las llamadas a Dispose() se produzcan
automáticamente cuando una
referencia a objeto sale de su ámbito.

Como dice Benton, lo mejor es habituarse a utilizar 'using' siempre que sea
posible, y programar con
cuidado siempre.

Slds - Octavio
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida