Puede averiguar la difference
entre current time
y su desired schedule time
y hacer que el intervalo transcurrido en consecuencia. De esta manera, el evento del temporizador will fire once
en el momento previsto. Establezca el intervalo de tiempo en 24 horas cuando haya transcurrido.
private System.Timers.Timer _timer;
private void SetTimer()
{
DateTime currentTime = DateTime.Now;
int intervalToElapse = 0;
DateTime scheduleTime = new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, 10,0,0);
if (currentTime <= scheduleTime)
intervalToElapse = (int)scheduleTime.Subtract(currentTime).TotalSeconds;
else
intervalToElapse = (int)scheduleTime.AddDays(1).Subtract(currentTime).TotalSeconds;
_timer = new System.Timers.Timer(intervalToElapse);
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
_timer.Start();
}
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//do your work
_timer.Interval = (24 * 60 * 60 * 1000);
}
Dependiendo de lo que intente ejecutar, podría ser mejor simplemente compilarlo como una aplicación de consola y hacer que el Programador de tareas de Windows lo ejecute siempre que lo desee. –
@Nothing ¿puedes aceptar la respuesta de 'Adil'? que está funcionando bien y una buena solución también. :) Dado que esta pregunta está en la categoría sin respuesta. +1 a tu pregunta y a la respuesta de 'Adil'. Útil :))))., – RajeshKdev