我有一个代码,用于在每天早上5点执行Windows服务的方法。
编辑:
我原本期待该服务在下一个5点执行,并且之后每隔24小时再次执行。
方法
有人知道可能出了什么问题吗?
编辑:
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));
}
我原本期待该服务在下一个5点执行,并且之后每隔24小时再次执行。
方法
MethodToExecute()
确实在当天的5点(或其他指定时间)得到了执行,但第二天就没有执行。此外,似乎无论我是否第一次执行它都没问题,但是看起来服务会在一段时间后进入休眠状态,不再执行,所以如果5点在下一天而非当天到达,它将无法执行。有人知道可能出了什么问题吗?