请朋友看看这段代码的问题所在
private void TimerProc() //这是处理一个定时任务的代码
{
//停止定时
timerGetInfo.Stop(); //timerGetInfo是窗口上的一个定时器
//定时任务
///////////////////////////////////////
// 这里执行定时任务
///////////////////////////////////////
SetMsg("本次定时任务执行结束!");
SetTimerInterval();
}
private void SetTimerInterval()
{
timerGetInfo.Stop();
try
{
_EnactTime = ConfigurationManager.AppSettings["Timer"].ToString(); //在配置文件中设置每天早晨5点时执行定时任务
DateTime t1 = DateTime.Now;
DateTime t2 = DateTime.Parse(t1.ToString("yyyy/MM/dd") + " " + _EnactTime);
TimeSpan ts;
if (t1.CompareTo(t2) < 0)
{
ts = t2.Subtract(t1);
}
else
{
t2 = DateTime.Parse(t1.AddDays(1).ToString("yyyy/MM/dd") + " " + _EnactTime);
ts = t2.Subtract(t1);
}
int inv = Convert.ToInt32(ts.TotalSeconds * 1000);
timerGetInfo.Interval = inv;
SetMsg("下次定时任务时间是:" + t2.ToString("yyyy/MM/dd HH:mm:ss")); //SetMsg是一个显示消息的方法。
timerGetInfo.Start();
}
catch(Exception e)
{
SetMsg("无法设置下次定时任务的时间,错误是: " + e.Message);
}
}
在主窗口的Load事件处理中加入了SetTimerInterval(),在启动应用程序后,查看第二天的日志,发现5点钟时准时启动了定时任务,并在定时任务结束后显示:
“下次定时任务时间是:2008/12/20 05:00:00”,但查看第三天的日志时,发现在20日的5点并没有启动定时任务。是这段代码有什么问题吗?