Form se bloquea en los bucles, solucion?

Iniciado por Littl3, 11 Mayo 2008, 12:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Littl3

Buenas ya e notado algunas veces que con un programa creado en vb si lo haces trabajar mucho, por ejemplo que tenga que hacer muchos bucles o descargar archivos, el form se queda como bloqueado y se pone de color blanco, aunque la aplicacion sigue funcionando y cuando acaba todo vuelve a la normalidad  pero es bastante molesto, sabeis si esto tiene algun truco o solucion?

Lambda

Cita de: Littlehack en 11 Mayo 2008, 12:51 PM
Buenas ya e notado algunas veces que con un programa creado en vb si lo haces trabajar mucho, por ejemplo que tenga que hacer muchos bucles o descargar archivos, el form se queda como bloqueado y se pone de color blanco, aunque la aplicacion sigue funcionando y cuando acaba todo vuelve a la normalidad  pero es bastante molesto, sabeis si esto tiene algun truco o solucion?

pon DoEvents en el bucle

o sea

for i = 1 to 20
hacercosas..
doevents
next i

Littl3

Ostia! muy bueno gracias!! con los bucles funciona a la perfeccion, pero sigo teniendo problemas cuando descargo algo desde la aplicacion, se queda bloqueado el form, podria utilizar tambien el doevents? y que hace exactamente el doevents? salu2

Lewert

Si, siempre que puedas utiliza el DoEvents.
Pss se podria decir que el DoEvents deja procesar otros eventos para que el programa no rebiente.
Crack the bytes, crack yourself

cobein

No se de que manera estas haciendo las descargas, una manera que no se cuelgue la aplicacion es utilizar cSocketMaster mas la clase que trae incluida que es para realizar descargas.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

SERBice

si haces la descarga con la api URLDownloadToFile te recomiendo que uses threads (createthread, closehandle, etc)

si usas winsock, inet control o algun control que requiera usar bucles, como t han dicho usas DoEvets, que lo que basicamente hace es hacer una pequeña pausa en el subproceso actual y darle el foco al programa, para que ejecute ortos subprocesos y despues retorne.