安排C#Windows服务每天执行一项任务

Not*_*ing 5 c# windows-services scheduled-tasks

我找到了这个答案,我试着遵循这个,但是当我开始服务时,它没有带给我任何工作.我无法理解的一件事是:`_timer = new Timer(10*60*1000); //每10分钟

我想每天晚上10点开始服务,我怎么能这样做?

Adi*_*dil 8

你可以找出你和你difference之间的相应的时间间隔.这样在计划时间内计时器的事件.将时间间隔设置为经过时间的24小时.current timedesired schedule timewill fire once

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);
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以随意调用它,但是调用OnStart将确保它不会丢失计划任务.例如,你的服务在9:58开始,然后必须调用它,以便计时器的事件在10点开始 (2认同)