Ver Mensaje Individual
  #6  
Antiguo 09-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Estupendo. Por lo que dices creo que lo que estás necesitando es un "TTimer". Un "TTimer" es un cronómetro (que corre en segundo plano respecto del Hilo principal de tu aplicación, y que por lo tanto no atrapará a este), digo, es un cronómetro que cuenta con un evento "OnTimer".

Tienes el "TTimer" en la pestaña "System" de la paleta de componentes de Delphi. Asignas un intervalo de 1800000 milisegundos (30*60*1000) a la propiedad "Interval" del "TTimer"... "True" a su propiedad "Enabled"... y tendrás que cada 30 minutos se disparará el evento "OnTimer" del "TTimer".

El "TTimer", como queda dicho, no ocupará el Hilo principal de tu aplicación. Ahora bien, cuando lleguemos al evento "OnInterval"... si ahí se ha de ejecutar un bucle "for" o "while"... tal vez entonces sea bueno contar con un "Application.ProcessMessages", dentro del bucle, empero, en todo caso creo que el problema se habrá reducido no poco, tal vez incluso eliminado del todo.

En todo caso: olvídate del "Sleep". Si quieres hacer "algo" cada cierto intervalo de tiempo el componente "TTimer" es lo que andas buscando.

PD. Adjunto un sencillo ejemplo de "reloj" que utiliza un "TTimer" para mantener actualizada la hora.
Archivos Adjuntos
Tipo de Archivo: zip Reloj.zip (1,9 KB, 65 visitas)
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 09-05-2007 a las 13:22:50.
Responder Con Cita