当前位置: 首页 > 编程语言 > C#

Quartz.NET,repeateveryxweeks分享

时间:2023-04-10 20:29:03 C#

Quartz.NET,repeateveryxweeks我需要使用Quartz.NET实现以下场景:Repeateverynweeks:Sundayand/orMonday,Tuesday,Wednesday、周四、周五、周六……比如我可能会选择:周一周四,每两周复发一次,这样可以吗?我认为要走的路可能是使用Cron表达式,但到目前为止我还没有运气“每X周重复一次”谢谢!您正在运行Quartz.Net2.0和选项吗?它尚未正式发布,但其中有一种新的触发器类型应该可以解决您的问题。它称为日历间隔触发器。基本上你就像你在问题中描述的那样定义它。您将间隔设置为2,间隔单位为周,它每2周触发一次。我在这里写了一篇描述它的帖子。您可以在此处访问源代码文档。这是我使用过的解决方案...当没有重复出现时,我使用cron触发器并选择日期并让它每周运行一次EG00**1,2,3当每个选定的日期重复出现时,我会添加一个SimpleTrigger,它是从开始日期算起的星期几,然后我会通过将重复频率乘以7来计算重复频率。所以我每天都会得到一个简单的触发器。我希望这可以帮助别人!这是一个复杂的触发器,您可以使用3个触发器进行管理;触发2周样本cron:“0001*”触发2周样本cron:“00015*”触发触发选择天样本cron:“000?*SUN-SAT”第一个触发器将创建3。第二个触发器将删除3。祝你好运。不幸的是,Quartz.Net2未发布,未记录,并且引入了重大更改。正如Aureliano和Bongo所说,触发器的组合可能会有所帮助,但我对他们各自的解决方案知之甚少。我的解决办法是包裹一个CronTrigger,跳过不必要的事件:以上是C#学习教程:Quartz.NET,每x周重复一次分享的全部内容,如果对大家有用需要进一步了解C#学习教程,希望大家多多关注——varct=newCronTrigger();ct.CronExpression=newCronExpression(string.Format("0{0}{1}?*{2}*",minuteOfHour,hourOfDay,daysList));ct=newWeeklyTriggerWrapper(ct,2);publicclassWeeklyTriggerWrapper:CronTrigger{publicCronTriggerTrigger{get;私有集;}publicintWeekInterval{得到;私有集;CronTrigger触发器,intweekInterval){触发器=触发器;周间隔=周间隔;公共覆盖日期时间?ComputeFirstFireTimeUtc(ICalendarcal){返回Trigger.ComputeFirstFireTimeUtc(cal);.GetFireTimeAfter(afterTimeUtc);如果(result.HasValue){DateTimereference=StartTimeUtc;如果(LastFireDateTime.HasValue&&LastFireDateTime.Value>reference)reference=LastFireDateTime.Value;reference=reference.AddDays(7*WeekInterval);while(result.HasValue&&result.Value本文采集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,转载请注明出处: