使用C#在特定时间运行Windows服务任务

时间:2011-04-26 15:58:01

标签: c#

我已经设计了我的Windows服务,其中包含许多任务(每个xxx秒运行相同的逻辑),但对于我必须执行的新任务:

  • 在特定时间内通过HTTP从CDN存储库下载播放列表xml文件,请参阅下午03:12:12。
我正在寻找专业代码(只是线程或计时器squeleton),而不是有效的代码。

我希望我能为您提供所有需要的信息。

祝你好运

Bratom

4 个答案:

答案 0 :(得分:2)

如果您需要一个调度库,我会推荐Quartz.Net,我在不同的项目中使用了{{3}}。

答案 1 :(得分:2)

我知道您正在寻找代码,但是当我们需要完成我们的服务的日常任务时,我们构建服务并将其执行留给操作系统。

Schedule tasks

只需在启动服务的.bat文件中抛出一行代码,并安排该批处理文件在特定时间运行。

答案 2 :(得分:2)

在特定时间做某事与定期做某事并无太大差别。

假设你想在未来某个时候做点什么。我们称之为targetDate

DateTime targetDate = GetActionTime(); // whatever

// compute the difference between targetDate and now.
// we use UTC so that automatic time changes (like daylight savings) don't affect it
TimeSpan delayTime = targetDate.ToUniversalTime() - DateTime.UtcNow;

// Now create a timer that waits that long ...
Timer t = new Timer(TimerProc, null, delayTime, TimeSpan.FromMilliseconds(-1));

该计时器将触发一次回调。如果您希望每天在同一时间重复,您可以将目标日期(或者可能是对描述整个事件的记录的引用)传递给计时器proc,并让计时器proc更新目标日期然后调用Timer.Change更改计时器的截止时间。请务必将周期设置为-1毫秒,以防止它成为周期性计时器。

答案 3 :(得分:0)