Page 1 of 1

Sobrecarga de recursos al usar la clase WebBrowser

Posted: Thu Jul 04, 2019 1:05 pm
by bingen
OS adjunto un proyecto en el que se viualizan direcciones en el maps.
Si se visualiza el administrador de tareas ,el ejecutable va aumentando de tamaño hasta el infinito y más allá. :D
Creo que no se llega a cerrar del todo los recurso del objeto WebBrowse.
Estoy con un proyecto de verificación de direcciones en maps y hacen decenas de llamadas a WebBrowse hasta que peta y se sale de la aplicación.
Saludos y gracias por vuestro trabajo

Re: Sobrecarga de recursos al usar la clase WebBrowser

Posted: Thu Jul 04, 2019 8:28 pm
by ignacio
Hola Bingen,

Lo primero que me ha extrañado al ver tu ejemplo es el uso de un módulo WebBrowser.prg. Esto no es necesario en Xailer 6 e incluso está desaconsejado, ya que como has podido ver tu mismo, la versión de TWebBrowser da constantemente mensajes de que estás usando un navegador muy antiguo. Por lo tanto lo primero sería eliminar ese módulo y utilizar el control que suministra Xailer 6.

Incluso cambiando el módulo y usando el de Xailer 6 observo que se producen consumos excesivos de memoria, sobre todo si se realizan las operación de carga y cierre muy rápido, pero es muy fácil de solucionar el problema. Tan sólo hay que cargar el formulario del WebBrowser una ÚNICA vez.

Pasos a realizar:
1) oWebBrowserForm:lHideOnClose := .T.
2) Añadir un control TWebBrowser al form1
3) Eliminar la creación de un control TWebBrowser en la creación del TBevel
4) En el cierre del formulario navegar a 'about:blank'
5) Crear una DATA en form2 para guardar la instancia de form1
6) Instanciar form1 una sóla vez si es NIL

Adjunto el proyecto modificado

Nota: De esta forma sólo se instancia una vez el OCX y el consumo de memoria que se pueda observar, entiendo que se debe al propio cache que mantiene Internet Explorer

Re: Sobrecarga de recursos al usar la clase WebBrowser

Posted: Mon Jul 08, 2019 11:22 am
by bingen
Muchas gracias por contestar
Saludos