Timer-Función de espera

Estoy intentando hacer un procedimiento que funcione como un tiempo de espera, es decir, de acuerdo al tiempo que le indique se quede esperando hasta que termine ese tiempo y recién allí ejecute nuevas instrucciones. Lo que yo quiero es que determinada información se muestre de acuerdo a un tiempo que cada una tiene asignada, por ejemplo información 1 debe durar 1 minutos, cuando termine ese minuto debe aparecer información 2, ahora el programa debe esperar que termine el tiempo de información 2 para mostrar la información siguiente. He probado con el timer pero mientras está contando se continúan ejecutando las instrucciones y por eso se muestra todo de una vez.
¿Conocen ustedes una manera de hacer que el timer se mantenga contando y no ejecue nada hasta que termine de contar y recién allí siga leyendo el resto de instrucciones? ¿O saben como puedo hacer un procedimiento de espera? ¿Se puede sincronizar con un reloj?
Por favor mucho les agradecería la ayuda que me puedan brindar en esto.
Gracias
PD:Esto es un ejemplo de lo que tengo en el código (está en un modulo vas)
Public sub Escribirinformacion(myrecordset as recordset)
tiempo = 2
alarmtime=time+tiempo
'tiempo que debe durar para escribir es de 2 segundos
Contadortiempo.Enabled = True
Contadortiempo.Interval = (tiempo * 1000)
If alarmsounded = True Then
TxtRutina ="....................."
'
'
'una serie de instrucciones para escribir
End If
'Esto está en el formulario
Private Sub Contadortiempo_Timer()
If Time >= alarmtime Then
alarmsounded = True
MsgBox ("Momento de mostrar otro ejercicio")
Else
alarmsounded = False
End If
End Sub

1 respuesta

Respuesta
1
Probá con la API sleep, la sintaxis es así:
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
Y se puede llamar de la siguiente forma:
Sleep 0&
Hola, gracias por tu respuesta pero se me olvidó aclarar en la pregunta que no puedo usar el API Sleep, porque me están pidiendo que lo haga a través de eventos o del timer. He estado usando el timer pero no he logrado que se quede contando hasta que termine el tiempo indicado y recién allí pase a la siguiente instrucción.
¿Me podrías ayudar en como hacer un evento que trabaje parecido al sleep?
Gracias
No se si es la mejor, pero lo solucioné así y funcionó a la perfección:
1ero) Poné un timer con el nombre Timer1 y el intervalo 1000
2do) este código:
Option Explicit
Dim temp As Integer
Private Sub Form_Load()
MsgBox "hola"
ESPERAR 2
MsgBox "Chau"
End Sub
Private Function ESPERAR(TIEMPO As Integer)
temp = 0
While temp < TIEMPO
DoEvents
Wend
End Function
Private Sub Timer1_Timer()
temp = temp + 1
End Sub
Lo llamás como Esperar y el parámetro es el número de segundos a esperar
Disculpa que no haya finalizado la pregunta antes es que no me llegó la notificación de que había recibido una nueva respuesta. Probé tu solución y funciona bien.
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas