【问题标题】:Writing a Scheduled Windows Service in .NET在 .NET 中编写计划的 Windows 服务
【发布时间】:2008-10-02 20:01:02
【问题描述】:

我想编写一个用户可以安排的 Windows 服务。即用户可以选择每天上午 9:00 到下午 6 点运行服务,也可以每天晚上运行,从晚上 12 点开始到第二天早上 6 点,等等。 box .NET API 可以帮助我做到这一点吗?我知道我可以使用计划任务来做到这一点,但是有没有办法以编程方式做到这一点?

【问题讨论】:

    标签: .net windows-services


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      服务的第二部分是一个小的 Windows 应用程序,它允许用户设置计划,当然,还可以将其写入前面提到的注册表值。

      您不需要任何类型的特殊 API。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

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

            干杯!

            罗伯托

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-02-18
              • 2016-02-10
              • 2010-09-28
              • 1970-01-01
              • 2014-02-03
              • 2018-04-04
              相关资源
              最近更新 更多