miércoles, enero 30, 2008

OutOfMemoryError en Visual Basic 2005 Expresss por un WebBrowser

Tengo una aplicación, que cuando esta sin uso, activa un Timer.

La aplicación tiene un WebBrowser desde donde muestra varias paginas html con publicidad.

Cada N segundos, cambia el html por otro.

Resulta que me reportaron que luego de tener la aplicación mostrando los htmls durante la noche, en la mañana aparecía sin funcionar.

Luego de revisar bien el problema, encontre que me estaba dando un mensaje de System.OutOfMemoryError.

Revisando las ejecuciones, me di cuenta que con cada WebBrowser1.Navigate(url) la aplicación empezaba a utilizar mas y mas memoria …

Lo primero que paso por mi mente fue… el Garbage Collector… me puse a buscar como llamar al GB… como darle dispose o destroy …

Al final encontre que hay que darle dispose… que hay que quitarlo del form.. y hay que darle new y volverlo a agregar…. Pero… tampoco funciono.

Luego de varias desesperadas pruebas encontre que el problema es que las paginas html que estaba mostrando… eran… mht… pero eso no me daba problemas antes… el problema es que las paginas mht tienen llamadas a SWF flash…

La solucion… volver las paginas de publicidad a html… aunque tengan flash.. no fallán..!

Saludos!