Estoy en mitad de un proyecto para una aplicación mobile con .NET CF 2.0 y WM 6.0.
Hoy empecé la mañana con toda la intención de terminar lo que me faltaba del proyecto. Pero cual no fue mi sorpresa cuando al querer ejecutar el programa, el mismo fallaba con una excepción de tipo ObjectDisposedException.
El error ocurría al asignar un valor a la propiedad SelectedIndex de un ListBox. Los datos de dicho ListBox provenían de un DataTable construido sobre la marca para contener los datos a mostrar en ese ListBox.
Hasta donde podía entender el error se producía debido a que el origen de datos asociado al Listbox por alguna razón ya no existía en memoria al momento de asignar el valor de SelectedIndex, lo cual era prácticamente imposible pues ambas lineas de código estaban inmediatamente contiguas.
Luego de perder TODO EL DIA buscando en Google las causas de dicho error y sus posibles soluciones, es hasta ahora, a las 9:15pm cuando he caído en cuenta que el error lo estaba causando el hecho de que YO puse código en el evento SelectedIndexChange del ListBox que causaba el cierre de la forma.
Dado que ese evento se invoca INMEDIATAMENTE después de asignado un valor a la propiedad DataSource, el evento SelectedIndexChanged se disparaba e invocaba el código que resultaba en this.Close(), lo cual a su vez causaba la liberación de todos los recursos, incluyendo el DataSource asociado al ListBox, razón por la cual al llegar al SelectedIndex, se generaba el error en cuestión.
Simplemente increíble!!! Son estos errores los que, muchas veces, causan retrasos considerables en los proyectos.
No hay comentarios:
Publicar un comentario