Я пытаюсь настроить 2 и более запланированных задач, чтобы выполнить разницу в 4 часа с тех пор, как первая задача смотрела. Для этого я использую библиотеку Quartz.NET как следующее:Расписание нескольких запланированных задач с использованием Quartz.net
ITrigger firstTrigger = TriggerBuilder.Create()
.WithIdentity("Trigger1")
.StartNow()
.WithCronSchedule("0 0 0/4 * * ?")
.ForJob("Job1")
.Build();
IJobDetail secondJob = JobBuilder.Create<StoreAnalyticsUsersUpdate>()
.WithIdentity("Job2")
.Build();
ITrigger secondTrigger = TriggerBuilder.Create()
.WithIdentity("Trigger2")
.StartAt(DateTimeOffset.UtcNow)
.WithCronSchedule("0 0 0/4 * * ?")
.ForJob("Job2")
.Build();
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sc = sf.GetScheduler();
sc.ScheduleJob(firstJob, firstTrigger);
sc.ScheduleJob(secondJob, secondTrigger);
sc.Start();
Я написал этот код для тестирования, просто чтобы увидеть, если tasks'll работать должным образом. Не завершает ни одну из запланированных задач после запуска моего приложения ...
P.S. Я называю метод в классе Global.asax, так что это не проблема ...
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
JobScheduler.StartCompetitorResearchUpdate(); // this is the method for the above code
}
Что я здесь делаю неправильно? .
Я попытался с простой, как: .StartNow() Сборка(); И оба задания выполнялись одновременно должным образом ... Возникает вопрос: кажется, что я добавлю инструкцию «WithCronSchedule» по какой-то причине oO –
Тест с ITrigger trigger = (ISimpleTrigger) TriggerBuilder.Create() .WithIdentity (" Trigger2") .StartAt (DateTimeOffset.UtcNow) .WithSimpleSchedule (с => s.WithIntervalInHours (4) .RepeatForever()) .ForJob (secondJob) Строить(); –