I have to execute job every day at midnight Pacific Time. I am using MVC3 with Quartz.NET library.
Here is my code:
public static void ConfigureQuartzJobs()
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
DateTime dateInDestinationTimeZone = System.TimeZoneInfo
.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, System.TimeZoneInfo.Utc.Id, "Pacific Standard Time").Date;
IJobDetail job = JobBuilder.Create<TimeJob>()
.WithIdentity("job1", "group1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartAt(dateInDestinationTimeZone)
.WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
.Build();
sched.ScheduleJob(job, trigger);
sched.Start();
}
This code makes this job run only once at first midnight(in Pacific Time). I have set there .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
but it is not working - job is not repeating every day.
What can I do to make it work every day?
Are your scheduled tasks hosted by web application? If so, you may experience such problems. Web applications are not suitable for running scheduled tasks. You should rather create windows service that hosts scheduled tasks.
But there are also some things you may check:
There are some articles that explain what are pros and cons of hosting scheduled tasks in web application, ie. this one: http://www.foliotek.com/devblog/running-a-scheduled-task/.