Si può scoprire la difference
tra il current time
e la vostra desired schedule time
e rendere l'intervallo di trascorrere conseguenza. In questo modo l'evento del timer will fire once
al momento previsto. Imposta l'intervallo di tempo a 24 ore quando è trascorso.
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);
}
A seconda di cosa si sta cercando di correre, potrebbe essere meglio per costruire solo come un'applicazione console e hanno la pianificazione di Windows eseguito ogni volta che vuoi. –
@Nothing puoi accettare la risposta 'Adil'? che sta funzionando bene e anche una bella soluzione. :) Poiché questa domanda è in una categoria senza risposta. +1 la tua domanda e la risposta 'Adil'. Utile :))))., – RajeshKdev