【问题标题】:Parse cron expression in Quartz.Net在 Quartz.Net 中解析 cron 表达式
【发布时间】:2013-12-27 15:15:21
【问题描述】:

我有一个与quartz.net cron 表达式有关的问题。看了很多文章,尝试了很多代码,但没有任何结果,所以我觉得有点绝望,这就是为什么我决定问你。也许有人也有类似的问题。 有什么方法可以将 Quartz.Net 的 cron 表达式解析为 DateTime 格式? 例如我有一个 cron:

var cron = new Quartz.CronExpression("0 * 8-22 * * ?");

我已经尝试使用 GetFinalFireTime() GetTimeAfter() GetNextValidTimeAfter() 但应用程序仍然抛出异常:

An unhandled exception of type 'System.AccessViolationException' occurred. Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

这是我的代码:

CronExpression cron = new Quartz.CronExpression("0 * 8-22 * * ?");
DateTimeOffset? nextFire = cron.GetNextValidTimeAfter(dt);

如果您能告诉我是否有任何可以轻松创建 crons 的 cron 解析器库,我也将非常感激。类似于 cronMaker.com,但可以与 Quartz.Net 一起使用。

【问题讨论】:

    标签: c# .net cron quartz.net


    【解决方案1】:

    GetFinalFireTime 不是implemented yet
    如果您使用的是最新版本之一,GetNextValidTimeAfter 应该可以工作。

    如果你想在c#中生成cron表达式,你可以使用CronScheduleBuilder

    更新:

    您可以找到一个简单的项目here (QuartzNetCronExpressions.zip),您可以在其中了解它是如何工作的。

    注意:我使用过 VS 2013、Framework 4.5.1 和 Quartz.net 2.2.1(nuget 包)。

    【讨论】:

    • 您好,感谢您的快速回复。我使用的是石英版本 2.2.1,它是最新版本,但仍然做错了,因为当我尝试使用 GetNextValidTimeAfter() 时,应用程序会抛出相同的 (System.AccessViolationException) 异常。你知道什么可能是错的吗?我真的很绝望,我会非常感谢你的回答。
    • 我已经更新了我的答案,您可以在其中找到一个简单的示例。它必须工作。给我们一些反馈。
    • 您好 LeftyX,非常感谢您的帮助。您的应用程序运行良好。我认为我的机器有一些问题,因为我的项目不会在其他机器上抛出错误......你怎么想,我要创建应该看起来像 www.cronmaker.com 的 WindowsFormApplication,最好使用 numericTextBoxes、日历和使用表达式 (0 * 8-22 * * ?) 或使用 CronScheduleBuilder 构建表达式?再次感谢您的帮助。最好的问候
    • 很高兴您设法解决了问题。我不知道您是否能够使用 CronScheduleBuilder 创建您想要的所有表达式,但您可以试一试。干杯。
    • 您好,抱歉回复晚了。我弄清楚是什么原因。当我逐步检查代码行时,它仅在 DEGUG 模式下的 KVM 机器上引发此错误。我想这是虚拟机不在石英或.net 中的问题。非常感谢您的帮助!
    【解决方案2】:

    我遇到了同样的问题。不知何故,我的构建项目配置设置为 x86。它没有让我选择更改它。我卸载了项目并在记事本中进行了更改。构建配置设置为“AnyCPU”并且事情开始工作问题已解决

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      相关资源
      最近更新 更多