Programación General > Visual Basic 6.0 e inferiores
Procesos Paralelos
Jose Arriagada:
Gracias por las todas las respuestas y dedicacion a estas.
Probando con el DoEvents, encontre una falla.
Si utilizan el siguiente codigo:
Private Sub Command1_Click()
Command1.Tag = 1
For a = 1 To 10000
DoEvents 'linea que te decia
List1.AddItem Format(Time, "hh:mm:ss")
If CDbl(Command1.Tag) = 0 Then
Exit For
End If
Next
End Sub
Private Sub Command2_Click()
MsgBox "hola"
End Sub
Private Sub Command3_Click()
Command1.Tag = 0
End Sub
Private Sub Form_Load()
Command1.Tag = 1
End Sub
Se daran cuenta que:
- Al presionar command1, se ejecuta la insercion de registros con la hora en list
- Al presionar command2, se muestra un mensaje, hasta aqui, todo ok.
- Pero si al presionar command2, esperamos unos segundos (10 aprox) y presionamos "Aceptar", el proceso que estaba haciendo command1, continua.
Y podran darse cuenta, que mientras se estaba esperando que se presione "Aceptar", el proceso command1 se detiene, y ellos simplemente revisando los registros de tiempo que se insertaron en el list, veran que existe en alguna parte entre un registro y otro un periodo de 10 seg aprox, y esto es producto de que estaba esperando "Aceptar"
La respuesta esta cerca, pero aun no he podido realizar procesos paralelos.
Gracias.
Brroz:
Hola José.
Es normal que esto que comentas ocurra. Hay una sola hebra para realizar las acciones del bucle en command1 y el resto de eventos que generes, y mientras se hace una cosa, no se hace la otra.
Crea otro ejecutable que realice las acciones de command1, al usar shell en OpenProcess estarás usando una nueva hebra del procesador. Esto lo he utilizado en varios proyectos (casi siempre con procesos que copian gran cantidad de archivos, importan datos y cosas por el estilo) y funciona sin mayor problema.
Con lo que sí que te puedes encontrar es que te tengas que plantear el diseño de la aplicación de otra forma (así por las buenas no podrías mostrar los resultados de la ejecución del subproceso en un form del programa principal... tendrías que pensar en arreglar la situación mediante paso de parámetros, punteros, etc.).
A lo mejor realizar estos cambios te supone dar la vuelta a media aplicación y no estás dispuesto, pero vb cojea de las dos piernas en lo que se refiere a uso de threads.
Chao.
Navegación
[*] Página Anterior
Ir a la versión completa