1

我正在使用 Quartz.NET 并面临以下任务:

安排每 10 分钟解雇一次工作,并在每次发生前 1 分钟进行提醒。

你知道是否可以设计一个触发器来做到这一点?

如果可能,我想避免处理 2 个触发器(一个用于提醒,一个用于工作)。

我将为提醒和作业使用相同的 IStatefulJob 类,在 JobDataMap 中添加一个 bool IsReminder

可能有一个cron命令可以做到这一点,但恐怕我对cron一无所知......

编辑:我只是想补充一点,2 触发器解决方案工作得很好,所以这只是为了获得更简洁的代码(并且在我的调度程序中减少一半的工作)

4

1 回答 1

1

作为记录,我将回答我自己的问题。

一种解决方案是使用两个移位触发器,其时间等于您要设置的提醒时间:

 //Let's set a recurrent task, starting 10 seconds from now, and firing every 20 seconds, with a 5 seconds reminder.
 DateTime startTime = DateTime.UtcNow.AddSeconds(10);

 SimpleTrigger remindertrigger = new SimpleTrigger("reminderTrigger",
              null,
              startTime.AddSeconds(-5), //Reminder time shift
              null,
              SimpleTrigger.RepeatIndefinitely,
              TimeSpan.FromSeconds(20));


SimpleTrigger strigger = new SimpleTrigger("taskTrigger",
              null,
              startTime,
              null,
              SimpleTrigger.RepeatIndefinitely,
              TimeSpan.FromSeconds(20));

您现在可以将这些触发器附加到两个作业。

另一种解决方案是仅为提醒设置触发器,并在触发器 Execute 方法中为任务创建作业。

于 2010-01-15T08:56:15.043 回答