A raíz de un artículo del msdn, relacionado con objetos BindingSource (
http://msdn.microsoft.com/es-es/library/y8c0cxey(VS.85).aspx)
me surgió una duda: ¿Cuándo libera el GC estos objetos BindingSource, intermedios entre los Dataset y los controles visuales?
Hice un experimento con el mismo ejemplo anterior, para interceptar el momento en que se liberan:
Código:
...
...
AddHandler masterBindingSource.Disposed, AddressOf MiEventHandler
...
...
Public Sub MiEventHandler(ByVal sender As Object, ByVal e As EventArgs)
debug.print("El objeto se ha liberado")
End Sub Y mi sorpresa es que el debug NUNCA llegó a ejecutarse.
Si el mismo experimento lo hago con cualquier otro objeto (vale con el DataGridView del ejemplo), funciona correctamente.
¿Cómo puedo saber con seguridad que estos objetos intermedios llegan a liberarse alguna vez? ¿Será que nunca lo hacen...? ¿Me tengo que creer que sí, sin poder comprobarlo? Creía que la computación era una ciencia, pero empieza a parecerse a una religión dogmática, a fuerza de tanto "creer" que los recursos se liberan solos.
¿No os preocupa saber si de verdad el GC sabe cuándo y cómo debe liberarlos, o si hay ocasiones en las que se le olvida algo, como podría ser este caso?
Echo de menos el viejo sistema, en el que yo decidía cuándo liberar las cosas...