推荐一个 C# 任务调度库 [关闭]

Posted

技术标签:

【中文标题】推荐一个 C# 任务调度库 [关闭]【英文标题】:Recommend a C# Task Scheduling Library [closed] 【发布时间】:2010-10-05 04:02:48 【问题描述】:

我正在寻找一个 C# 库,最好是开源的,它可以让我以相当大的灵活性安排任务。具体来说,我应该能够安排每 N 个时间单位以及“每个工作日 XXXX 时间”或“每个星期一 XXXX 时间”运行一次。比这更多的功能会很好,但不是必需的。这是我想在 Azure WorkerRole 中使用的东西,它立即排除了 Windows 计划任务、“at”、“Cron”以及任何需要安装和/或 GUI 才能运行的第三方应用程序。我在找图书馆。

【问题讨论】:

查看 2014 年推出的本机可用 Azure 调度程序 - azure.microsoft.com/en-us/services/scheduler 【参考方案1】:

我在这个问题How might I schedule a C# Windows Service to perform a task daily? 中读到了Quartz。它是一个 C# 库,允许灵活调度。

【讨论】:

【参考方案2】:

Aditi Technologies 提供了一个新的基于云的调度程序,名为 Scheduler。

调度器允许开发者通过调度任务的执行 在简单或复杂 CRON 计划上运行的 HTTP webhook。

【讨论】:

【参考方案3】:

Quartz 似乎是一个不错的解决方案。

我最近(今年)不得不为我正在从事的一个主要项目编写自定义任务计划程序。他们也无法使用 Windows 任务计划程序,还希望能够通过上传程序集(通过 ASP.net 网站)执行自定义功能,并让服务在指定时间执行适当的任务。

老实说,这有点像一场噩梦(设计和实现并不多,但调度逻辑有点拖累)。

我强烈建议在决定“自己动手”(也就是重新发明***!)之前用尽所有其他途径。

【讨论】:

【参考方案4】:

我在 Java 时代使用过 Quartz,它工作得很好。我现在将它用于一些 .Net 工作,并且效果更好(当然,它已经稳定了很多年)。所以我当然支持它的建议。

另一件我刚开始尝试的有趣的事情是 .Net 4.0 中的新 System.Threading.Tasks。我一直在使用这些任务来并行化工作,它充分利用了多核/处理器。我注意到那里有一个名为 TaskScheduler 的类,我没有详细查看它,但它有 QueueTask、DeQueTask 等方法。至少值得研究一下。

【讨论】:

【参考方案5】:

http://quartznet.sourceforge.net/

“Quartz.NET 是非常流行(原文如此!)开源 Java 作业调度框架 Quartz 的一个端口。”

PS:智者的话,不要试图在工作时只导航到quartz.net ;-)

【讨论】:

quartz.net 是使用 windows scheduler 还是 timers 进行调度? 但它不支持开箱即用的异步/等待。 它有一个严重的错误,如果你有 20 个任务和 5 个线程在池中,它会更频繁地执行前几个任务,并且最近的 tsks 每几分钟只执行一次,而不是像我一样每 15 秒执行一次'问过。正如@michael-sync 提到的,它不支持异步/等待。 如果您在 2017 年来到这里,请使用 HangFire。 hangfire.io HangFire 是一种在 .NET 和 .NET Core 应用程序中执行计划任务和后台处理的简单方法。无需 Windows 服务或单独的进程。还带有一个漂亮的仪表板 UI 开箱即用。由持久存储支持。开放且免费用于商业用途。相关SO问答:***.com/q/27875631/325521【参考方案6】:

参见 Codeproject 上的A New Task Scheduler Class Library for .NET。

【讨论】:

比石英更喜欢这个,但需要知道,如果它是长期支持的库。企业原因。

以上是关于推荐一个 C# 任务调度库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

《CLR via C#》之线程处理——任务调度器

java 任务调度 框架比较多 那个 最好用呢 .. quartz 吗。谁能给我推荐一下呢。

python中的轻量级定时任务调度库:schedule

python中的轻量级定时任务调度库:schedule

在调度程序任务中执行存储库功能

Windows 2008 服务器任务调度程序不运行 .bat 批处理作业 [关闭]