我正在使用Quartz.NET库,我需要每两天执行一次作业,并在下午22点到早上6点之间每两小时重复一次。我不知道如何实现这一目标。我尝试了所有触发器将它们与日历结合起来以排除其他时间,但没有任何效果,因为我想要。有什么想法吗?
答案 0 :(得分:2)
这就是答案。
protected void Application_Start()
{
//....
EveryTwoWeek();
//....
}
private void MainJob()
{
int hourNumber = 2;
var schedFact = new Quartz.Impl.StdSchedulerFactory();
var sched = schedFact.GetScheduler();
sched.Start();
var twoHourlyTriggerFrom22To6 = Quartz.TriggerUtils.MakeHourlyTrigger(hourNumber);
twoHourlyTriggerFrom22To6.StartTimeUtc = System.DateTime.Now.Date.AddHours(22);
twoHourlyTriggerFrom22To6.EndTimeUtc = System.DateTime.Now.Date.AddHours(22 + 8);
var jobDetail = new Quartz.JobDetail("Method", methodType);
sched.ScheduleJob(jobDetail, twoHourlyTriggerFrom22To6);
}
private void EveryTwoDays()
{
int dayNumber = 2;
var schedFact = new Quartz.Impl.StdSchedulerFactory();
var sched = schedFact.GetScheduler();
sched.Start();
var everyTwoDaysTrigger = Quartz.TriggerUtils.MakeImmediateTrigger(int.MaxValue, new System.TimeSpan(0, dayNumber * 24, 0, 0));
everyTwoDaysTrigger.StartTimeUtc = System.DateTime.Now.Date;
var jobDetail = new Quartz.JobDetail("MainJob", mainJobType);
sched.ScheduleJob(jobDetail, everyTwoDaysTrigger);
}
答案 1 :(得分:0)
0 0 0,2,4,6,22 1/2 *怎么样? * 强>
严格来说,这不是每两天一次,而是每个月的第1天,第3天,第5天等。