2008-10-02 42 views
3

我想编写一个用户可以调度的Windows服务。即用户可以选择每天从上午9点到下午6点运行服务,或者他可以每天晚上从晚上12点到下一天早上6点开始运行服务。是否有任何框.NET API将帮助我做到这一点?我知道我可以使用计划任务来做到这一点,但有什么方法可以通过程序来完成吗?用.NET编写一个预定的Windows服务

回答

6

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

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

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

没有任何您需要的特殊API。

0

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

7

我使用Quartz.NET在Windows服务中执行预定任务的结果很好。你可以做所有事情,从简单的间隔时间表到克朗风格的时间表。

2

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

0

我实现了一些无人参与的服务(使用c#编写的Windows服务),使用crontab算法来管理调度。该模式功能强大,灵活。我们可以在任何时候创建时间表,只使用cron表达式。也许我错了,但我认为cron没有涵盖的唯一时间表是我们想要在每月的最后一天,但这不是所有服务的要求。

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

查看更多详细信息,在我的博客: CronTab schedule parser algorithm

干杯!

Roberto