【问题标题】:Need help writing a recurring task scheduler需要帮助编写重复性任务调度程序
【发布时间】:2011-01-05 04:35:23
【问题描述】:

我需要编写一个工具,该工具将按照用户可配置的时间表运行重复性任务。我将用 C# 3.5 编写它,它将在 XP、Windows 7 或 Windows Server 2008 上运行。这些任务大约需要 20 分钟才能完成。用户可能希望设置几种配置:例如,每日、每周和每月周期。不能使用任务计划程序。

用户将通过类似于 Outlook 的定期约会对话框的界面安排重复。一旦他们设置了时间表,他们将启动它,它应该位于系统托盘中并在指定的时间启动它的任务,然后发送邮件以表明它已经完成。

编写此代码的最佳方法是什么,以免占用资源、锁定主机或其他行为不端?

【问题讨论】:

    标签: windows service scheduling


    【解决方案1】:

    您可以做的最好的事情是避免通过利用操作系统提供的功能重新发明轮子。请参阅 Bart De Smet 的文章Calling the Task Scheduler in Windows Vista (and Windows Server 2008) from managed code,了解 C# 中 Windows 任务调度程序的非常中肯的用法。

    如果由于某种原因您必须实现自己的服务(例如,更好地控制依赖项),我会查看一些 .NET 兼容语言的开源 Cron 实现。有一篇关于名为Implementing a small Cron service in C# 的代码项目的代码似乎可以做到这一点。根据他的文章An Event Based Cron (Scheduled) Job In C#,看起来 Bob Cravens 在这方面做了一些更彻底的工作,或者至少更彻底地记录了他的工作。如果你环顾四周,我相信还有其他的,基于 Cron 的东西是一个很好的起点。

    【讨论】:

    • 太棒了!正是我想要的
    【解决方案2】:

    我建议编写一个使用 SQlite 数据库的 Windows 服务来获取时间表和 添加一个 GUI 将您需要的任何内容写入数据库,但请记住使用

    System.Timers.Timer 
    

    而不是

    System.Windows.Forms.Timer
    

    在您的 Windows 服务中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      相关资源
      最近更新 更多