• Viernes 8 de Noviembre de 2024, 23:25

Autor Tema:  ¿Cómo puedo interrumpir a Sleep()?  (Leído 1318 veces)

LauraMadrid

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
¿Cómo puedo interrumpir a Sleep()?
« en: Viernes 27 de Noviembre de 2009, 11:19 »
0
La cosa es muy simple, pero no doy con la solución. En mi programa tengo un código que se ejecuta cada x segundos. Entonces al terminar de ejecutarse uso un Sleep para que espere lo que falte hasta el próximo periodo. Pero esto hace que el programa se bloquee completamente. Me gustaría poner un botón para detener este ciclo en cualquier momento, para lo cual necesito algo que interrumpa a Sleep. ¿Cómo interrumpir a Sleep?
¡¡Gracias!!
Laura

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: ¿Cómo puedo interrumpir a Sleep()?
« Respuesta #1 en: Viernes 27 de Noviembre de 2009, 12:10 »
0
lo mejor que puedes hacer es poner un bucle en el cual recibas la entrada del boton, con un sleep muy pequeño (echale un 1) lo justo para evitar que el consumo se suba a 100%. Para poder continuar, lo que haces es esperar un evento de Timer (en windows).

Postee en este foro como usar un timer, dale a buscar.

Entonces, si recibes el boton, actuas y paras el timer, si no esperas y reaccionas al evento de timer para decidir actuar

suerte

rfog

  • Miembro MUY activo
  • ***
  • Mensajes: 166
    • Ver Perfil
Re: ¿Cómo puedo interrumpir a Sleep()?
« Respuesta #2 en: Sábado 28 de Noviembre de 2009, 11:39 »
0
Create un evento con CreateEvent(). Luego, en lugar de hacer un Sleep() haces un WaitForSingleObject() sobre el evento, y cada vez que quieras despertar al hilo, haces una llamada a SetEvent() con el handle del evento y el hilo se despertará.
Microsoft Visual C++ MVP - Mi blog sobre programación: http://geeks.ms/blogs/rfog