【发布时间】:2016-06-10 21:20:29
【问题描述】:
我有一个 C# .NET Web 应用程序,其 UI 类似于 http://www.cronmaker.com/。用户可以从许多选项中选择工作的频率。我需要能够创建一个 cron 表达式来表示用户所需的频率,并且它必须与 Hangfire 兼容。我的想法是:
找到一个现有的库。但我一直没能。我听说 Quartz 可以做到这一点(虽然这有点矫枉过正),但它似乎可以在某些情况下创建 cron 表达式,但在其他情况下则不行。
制作我自己的工具,使用 cronmaker.com 找出格式。但是,cronmaker 以 Hangfire 认为无效的格式创建 cron 表达式。对于“每个小时”,cronmaker 说“0 0 0/1 1/1 * ? *”,Hangfire 说这是无效的。我发现“0 */1 * * *”有效。
我需要能够动态生成任何 cron 表达式。肯定有一个库可以执行类似 CronLibrary.GetCronExpression(Frequency.EveryNDays, 3, "12:00") 的操作,并提供涵盖所有可能情况的选项。有人知道这样的图书馆吗?
【问题讨论】:
-
您能否更好地定义您要问的问题?
-
我有一个看起来像 cronmaker.com 的页面。用户使用单选按钮、下拉菜单和文本框来指示所需的频率,例如“每 5 分钟”、“每个工作日上午 9 点”或“每个月的第一个星期一”。无论它们指示什么频率,我都需要创建相应的 cron 表达式。我该怎么做?
-
@Robin 让我尝试用不同的方式提问。我看到有人问“每天午夜的 cron 表达式是什么”,有人用字符串文字回应了这种特定情况。但我不仅需要特定的 cron 表达式;我需要能够动态生成任何 cron 表达式。肯定有一个库可以执行类似 CronLibrary.GetCronExpression(Frequency.EveryNDays, 3, "12:00") 的操作,并提供涵盖所有可能情况的选项。
-
似乎 cron 表达式可以有不同的格式,具体取决于所使用的系统,例如Unix、Hangfire 或 Quartz。我没有看到来自 Hangfire 的关于他们的 cron 表达式风格的详细文档 - 你有那个链接吗?
-
@Robin,恐怕我找不到关于 Hangfire cron 语法的链接。此外,为了澄清编辑,图书馆并不是唯一的解决方案,它似乎是最明显的解决方案。另一种可能的解决方案是,如果有一个像 cronmaker.com 这样的网站,但它会生成对 Hangfire 有效的 cron 表达式 - 然后我可以使用它作为模型来编写我自己的代码,将用户的输入转换为 cron 表达式。
标签: c# asp.net cron cronexpression hangfire