在.NET中编写计划的Windows服务

时间:2008-10-02 20:01:03

标签: .net windows-services

我想编写一个用户可以安排的Windows服务。也就是说,用户可以选择每天上午9:00到下午6点运行服务,或者他可以每晚运行,从晚上12点到晚上6点,等等。有没有框.NET API将帮助我做到这一点?我知道我可以使用计划任务执行此操作,但有没有办法以编程方式执行此操作?

5 个答案:

答案 0 :(得分:7)

使用Quartz.NET在Windows服务中执行计划任务,我得到了很好的结果。您可以执行从简单的间隔调度到cron样式的计划。

答案 1 :(得分:6)

我的第一反应是质疑服务的原因?但更重要的是,问题是为什么不使用操作系统提供的强大调度程序?

也就是说,Windows服务几乎只是应用程序运行的一个线程。您可以将它分为两​​部分,第一部分是在计时器上执行的服务本身。服务的启动可以检查注册表值以确定它应该执行的频率。

该服务的第二部分是一个小窗口应用程序,允许用户设置日程安排,当然,将其写入前面提到的注册表值。

您不需要任何特殊的API。

答案 2 :(得分:2)

如果您不希望用户必须处理任务调度程序,那么您应该编写一个程序,让他们选择运行程序的日期和时间,然后以编程方式为他们设置计划任务。这样他们就不必具体了解您正在运行的进程,而且他们也不必知道如何使用任务调度程序。他们只是从您的应用程序中完成所有操作。

答案 3 :(得分:0)

如果您要安排它,只需构建一个控制台程序并向安装程序添加一些代码,以帮助用户在Windows中设置计划任务。

答案 4 :(得分:0)

我实现了一些无人值守服务(用c#编写的Windows服务),使用crontab算法来管理调度。模式功能强大,灵活。我们可以随时创建计划,只使用cron表达式。也许我错了,但我认为cron没有涉及的唯一时间表是我们是否想要本月的最后一天,但这绝不是所有服务的要求。

我从互联网上的一篇文章中复制了cron算法(由Atif Aziz开源),并在我的实用工具类中实现,工作了很多年。

在我的博客中查看更多详情: CronTab schedule parser algorithm

干杯!

罗伯特