I had this code to execute method of windows service every day at 5am:
EDIT:
MyService ws = new MyService ();
protected override void OnStart(string[] args)
{
if (serviceHost != null)
{
serviceHost.Close();
}
serviceHost = new ServiceHost(typeof(MyService));
serviceHost.Open();
double TimeOfExecution = 5;
DateTime now = DateTime.Now;
DateTime today5am = now.Date.AddHours(TimeOfExecution);
DateTime next5am = now <= today5am ? today5am : today5am.AddDays(1);
System.Threading.TimerCallback callback = new System.Threading.TimerCallback(ws.MethodToExecute());
var timer1 = new System.Threading.Timer(callback, null, next5am - DateTime.Now, TimeSpan.FromHours(24));
}
I expected the Service to execute at next 5 o'clock, and every 24 hours after that.
Method MethodToExecute()
did get executed at 5 o'clock (or some other specified time) that day, but next day it failed to execute. Also, it seems that it does not matter if I executed it or not for the first time, but it seems like service goes to sleep after some time and doesn't execute, so if 5 o'clock arrives not at current day, but next day, it will fail to execute.
Does anyone have an idea what could be wrong?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…