Ver Mensaje Individual
  #33 (permalink)  
Antiguo 19/07/2011, 07:15
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Formulario MdiChildren no cierra, queda residente.

Bueno, finalmente he logrado encontrar el problema, que como todo problema que resulta desesperante y enloquecedor, terminó siendo una estupidez de características épicas.
En definitiva el error fue generado (misteriosamente) por el mismo Visual Studio 2005, al migrar estos dos formularios...
El problema es que no sé por qué causa, la migración dejó comentada una línea crítica del Dispose de los componentes en esos dos formularios:
Código vb:
Ver original
  1. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
  2.         If disposing Then
  3.             If Not (components Is Nothing) Then
  4.                 components.Dispose()
  5.             End If
  6.         End If
  7.         ' MyBase.Dispose(disposing) <--- Esta linea no deberia estar comentada.
  8.    End Sub
Tan simple como eso.
Como esa sección de código normalmente no se toca, no tengo ni la menor idea de cómo o por qué decidió ponerlo así, especialmente por cuanto al revisar los demás formularios importados, el resto no tienen esa linea comentada. Juro que yo no lo hice, revisé todos los backups desde la migración hasta la fecha y está así en todos.
Como sea, lo encontré cuando me puse a debuggear el funcionamiento del Dispose y detecté que en realidad no se estaba ejecutando completo y el evento Disposing no ocurría. Ahí fue cuando encontré las líneas así.

Un asco

Me ha hecho perder días y me ha retrasado hasta el cansancio esta etapa del proyecto, porque la directiva no quiere gastar 100 U$S en una librería paga.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)