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.
Etiquetas: .NET, Compact Framework, Windows Mobile