Problema con timer

borchx
10 de Junio del 2005
Hola, os cuento. Tengo un timer que cada 5 seg lanza un procedimiento. Resulta que este procedimiento accede a remoto y se puede quedar colgado eternamente. Para solucionar esto me he creado otro timer que se lance cada 30 seg por si el otro se ha quedado colgado, comprobando una variable global y así poder lanzar el procedimiento que da problemas. Para probarlo he puesto un While(true) wend justo antes de la llamada al procedimiento para simular que se ha quedado colgado. El problema es que nunca se activa el timer de comprobación y el prgrama se queda en el while y al final se bloquea (No responde). Alguna ayudilla??? Os dejo el código de los dos timer:


Private Sub tmrMonitorizacion_Timer()
If GBL_RUNNING And GBL_INICIALIZADO Then
GBL_ERROR_LECTURA = True

Call bloqueo(GBL_WRI_TEMP, GBL_RD_TEMP, 2)
While(true)
Wend
Call AppExecRemoteRead
Call desbloqueo(GBL_WRI_TEMP)

GBL_ERROR_LECTURA = False
'Call tmrControlLectura_Timer
End If
End Sub

Private Sub tmrControlLectura_Timer()
If GBL_ERROR_LECTURA = False Then

Call bloqueo(GBL_RD_TEMP, GBL_WRI_TEMP, 1)
Call AppExecLocalRead
Call desbloqueo(GBL_RD_TEMP)

Else
Call desbloqueo(GBL_WRI_TEMP)
Call tmrMonitorizacion_Timer
End If
End Sub

axelopez
10 de Junio del 2005
Lo que sucede que visual basic se queda ejecutando ese bucle infinito y no ejecuta el resto del codigo,

POR EJEMPLO SI A ESTE TIMER LE PONES 1 SEGUNDO DE INTERVALO

Private Sub Timer1_Timer()
Text1.Text = Text1.Text + 1
MsgBox Text1.Text
End Sub

SE EJECUTA Y TE QUEDAS 20 SEGUNDOS ESPERANDO, CUANDO PRECIONES CIERRES EL MSGBOX NO APARECERA 20 EN EL TEXTBOX APARECERA 1 Y VOLVERA ASUMAR AL SIGUIETE SEGUNDO.

Cuando tengas siclos muy grandes utiliza el doevents para ejecutar los otros hilos de la aplicacion, pero deben ir en el procedimiento no en el timer

salu2