Я пытаюсь заставить работать планировщик Quartz.net, но я не знаю, почему он не запускает задания, запланированные на будущее.Я проверил cron-триггер, который срабатывает каждую минуту, и он работает (работа и все), поэтому я знаю, что это не проблема с моим кодом работы.
Вещи, которые я пытался:
- Создание ISchedulerFactory глобальной статической переменной
- Создание IScheduler глобальной статической переменной
- Я добавилуведомление по электронной почте до конца Application_Start, чтобы я знал, когда оно запускается
- Каждый раз, когда я делаю изменения в коде планировщика, я перезапускаю приложение, и оно запускает мое уведомление по электронной почте, поэтому я знаю, что оно было перезапущено.*
Я запускаю эту программу в среде общего хостинга (не уверен, что это повлияет на нее).Мое предположение (и это только предположение) состоит в том, что происходит сбор мусора, но я не уверен, что и почему.
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(Recorder));
jobDetail.JobDataMap["domain"] = "www.mydomain.com";
jobDetail.JobDataMap["userId"] = "2";
// Create trigger (everything is in UTC!!!)
CronTrigger cronTrigger = new CronTrigger("Schedule");
cronTrigger.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow);
cronTrigger.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); // run in pacific timezone
cronTrigger.CronExpressionString = "0 30 13 ? * MON-FRI *";
sched.ScheduleJob(jobDetail, cronTrigger);
}