Programación General > Visual Basic 6.0 e inferiores

 Procesos Paralelos

<< < (3/3)

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

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa