0

我正在使用 Quartz.NET 库,我需要每两天执行一次作业,并在下午 22 点到早上 6 点之间每两小时重复一次。我不知道如何实现这一点。我尝试了所有将它们与日历相结合的触发器以排除其他时间,但没有按我的意愿工作。任何的想法?

4

2 回答 2

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);
        }
于 2013-01-07T14:00:25.877 回答
0

那么0 0 0,2,4,6,22 1/2 * 呢?*

严格来说,这不是每两天一次,而是在每个月的第一天、第三天、第五天等。

于 2013-01-07T13:48:59.060 回答