Estate atento porque en esta noticia encontrarás el arreglo que buscas.Este post fue evaluado por nuestros expertos para asegurar la calidad y veracidad de nuestro post.
Solución:
Si desea iniciar un temporizador exactamente a las 00:01:00 am, realice un tiempo de procesamiento y luego reinicie el temporizador, solo necesita calcular la diferencia entre Now
y el siguiente intervalo de tiempo de las 00:01:00 a. m., por ejemplo.
static Timer timer;
static void Main(string[] args)
setup_Timer();
static void setup_Timer()
DateTime nowTime = DateTime.Now;
DateTime oneAmTime = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, 0, 1, 0, 0);
if (nowTime > oneAmTime)
oneAmTime = oneAmTime.AddDays(1);
double tickTime = (oneAmTime - nowTime).TotalMilliseconds;
timer = new Timer(tickTime);
timer.Elapsed += timer_Elapsed;
timer.Start();
static void timer_Elapsed(object sender, ElapsedEventArgs e)
timer.Stop();
//process code..
setup_Timer();
Lo que debe hacer es escribir su programa que haga lo que necesite que haga, y luego usar el programador de tareas incorporado de su sistema operativo para iniciarlo. Sería lo más fiable. El Programador de tareas de Windows, por ejemplo, puede iniciar su aplicación antes de que el usuario inicie sesión, manejar el reinicio de la aplicación si es necesario, registrar errores y enviar notificaciones, etc.
De lo contrario, tendrá que ejecutar su aplicación las 24 horas del día, los 7 días de la semana, y hacer que sondee la hora a intervalos regulares.
Por ejemplo, podrías cambiar el intervalo cada minuto:
timer.Interval = 1000 * 60;
Y dentro de tu Elapsed
evento, verifique la hora actual:
static void timer_Elapsed(object sender, ElapsedEventArgs e)
if (DateTime.Now.Hour == 1 && DateTime.Now.Minute == 0)
// do whatever
Pero esto es realmente poco fiable. Su aplicación puede bloquearse. Y lidiar con DateTime puede ser complicado.
Agradecemos que quieras añadir valor a nuestra información asistiendo con tu experiencia en las explicaciones.