Pregunta: | 64056 - CRONOMETRO SINCRONIZADO A INTERVALOS |
Autor: | Ximo nose |
Hola a todos.
Estoy haciendo un cronometro que funciona a intervalos y con loop. Es decir, el usuario introduce un numero entre 1 y 59 (minutos) y el cronometro empieza desde ese numero a retroceder segundo a segundo. una vez llega a 0 vuelve a empezar. Basicamente sirve para emitir un sonido de alarma cada cierto tiempo. Eso lo tengo controlado, todo funciona a la perfección, el problema viene cuando tengo que sincronizarlo con la hora. Es decir, debido a los requisitos, ese cronometro tiene que estar sincronizado con las 00:00:00(horas:minutos:segundos) del reloj de windows. Si por ejemplo el usuario pone que el intervalo sea de 3 minutos las 24 horas del dia se dividirian en intervalos de 3 minutos y el comienzo del cronometro tambien deberia de sincronizarse. No se si me explico bien pero voy a poner un ejemplo facil a ver si asi lo aclaro. Imaginad que el intervalo es de 3 minutos y la hora actual es 00:00:05. Sabiendo eso, el cronometro en lugar de empezar a retroceder desde los 3 minutos deberia empezar a 00:02:55 y retroceder desde ahí. Otro ejemplo: El intervalo es de 10 minutos esta vez y la hora es 00:02:55. En este caso el cronometro empezaria a descontar desde 00:07:05. Otro ejemplo: Intervalo de 3 minutos y las hora es 00:06:05. En ese caso el cronometro deberia de empezar a 00:02:55 ya que se habrian completado dos bucles y 5 segundos. Eso es basicamento lo que no se como hacer: Sincronizar el cronometro para que empiece de forma sincronizada teniendo en cuenta el intervalo. Es en C# aunque no creo que la solucion sea distinta en cualquier otro lenguaje. |
Respuesta: | Juan Lombana |
Obten la Hora actual con Datetime.Now, restale el intervalo de tiempo (Consulta la clase TimeSpan), despues de tener el nuevo intervalo con un Cronometro establecido a un segundo, resta cada segundo (Obteniendo un TimeSpan cada vez y asi hasta que llegues a cero!), la sincronización solo se realiza una vez. |