我正在寻找一个C#库,最好是开源的,它可以让我以相当大的灵活性安排任务。具体来说,我应该能够安排每N个单位时间运行的事情以及“XXXX时间的每个工作日”或“XXXX时间的每个星期一”。比这更多的功能会很好,但不是必需的。这是我想在Azure WorkerRole中使用的,它立即排除Windows计划任务,“at”,“Cron”以及需要安装和/或GUI操作的任何第三方应用程序。我正在寻找一个图书馆。
答案 0 :(得分:61)
http://quartznet.sourceforge.net/
“Quartz.NET是一个非常有道理的(sic!)开源Java作业调度框架的端口,Quartz。”
PS:明智的话,不要试图在工作时导航到quartz.net; - )
答案 1 :(得分:7)
我在Java时代使用了Quartz,效果很好。我现在正在使用它来进行一些.Net的工作,它的工作效果更好(当然,它有很多年才能实现稳定)。所以我肯定会推荐它。
你应该看到的另一件有趣的事情,我刚刚开始使用的是.Net 4.0中新的System.Threading.Tasks。我刚刚使用任务来并行化工作,它充分利用了多核/处理器。我注意到有一个名为TaskScheduler的类,我没有详细查看它,但它有QueueTask,DeQueTask等方法。至少可能值得一些调查。
答案 2 :(得分:6)
请参阅Codeproject上的A New Task Scheduler Class Library for .NET。
答案 3 :(得分:5)
我在这个问题Quartz中读到了How might I schedule a C# Windows Service to perform a task daily?。它是一个C#库,允许灵活的调度。
答案 4 :(得分:3)
Quartz似乎是个不错的解决方案。
我最近(今年)必须在我正在进行的一个重大项目上编写自定义任务调度程序。他们也无法使用Windows任务计划程序,并且还希望能够通过上传程序集(通过ASP.net网站)执行自定义功能,并让服务在指定时间执行相应的任务。
事实上这件事真的是一场噩梦(设计和实施并不多,但调度逻辑有点拖累)。
我强烈建议在决定“自己动手”之前用尽所有其他途径(a.k.a重新发明轮子!)。
答案 5 :(得分:2)
Aditi Technologies有一个名为Scheduler的基于云的新调度程序。
Scheduler允许开发人员安排任务的执行 在简单或复杂的CRON计划上运行的HTTP webhook。