使用.NET编写定时Windows服务

3

我想编写一个用户可以预定的Windows服务。例如,用户可以选择每天从上午9点到下午6点运行服务,或者可以在每晚12点开始运行,一直到第二天早上6点等。是否有任何现成的.NET API可以帮助我实现这一点?我知道我可以使用计划任务来完成此操作,但是否有任何以编程方式完成此操作的方法?

5个回答

7

我在Windows服务中使用Quartz.NET执行定时任务取得了很好的效果。您可以做从简单的间隔调度到Cron样式的调度的所有事情。


6
我的第一反应是质疑为什么需要一个服务?但更重要的问题是,为什么不使用操作系统提供的强大调度程序呢?
话虽如此,Windows 服务基本上只是你的应用程序运行的线程。你可以将其分为两部分,第一部分是服务本身,它在计时器上执行。服务的启动可以检查注册表值以确定它应该执行的频率。
服务的第二部分将是一个小型的 Windows 应用程序,允许用户设置时间表,并将其写入前面提到的注册表值。
你不需要任何特殊的 API。

2
如果您不想让用户处理任务计划程序,那么您应该编写一个程序,让他们选择运行程序的日期和时间,然后您可以编程地为他们设置计划任务。这样,他们就不必了解您正在运行的具体过程,也不必知道如何使用任务计划程序。他们只需在您的应用程序中完成所有操作。

0

我实现了一些无人值守服务(使用c#编写的Windows服务),使用crontab算法来管理调度。这种模式非常强大和灵活。我们可以创建任何时间的计划,只需使用cron表达式即可。也许我错了,但我认为cron没有覆盖的唯一计划是如果我们想要月底最后一天,但这从未是所有服务的要求。

我从互联网上的一篇文章(Atif Aziz的开源文章)中复制了cron算法,并在我的实用类中实现,多年来一直运行良好。

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

干杯!

罗伯托


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接