У меня есть следующий код:
public class JobScheduler
{
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
//JOB - Automatically renew member subscriptions
IJobDetail subscriptionsJob = JobBuilder.Create<UpdateSubscriptions>().Build();
ITrigger subscriptionsTrigger = TriggerBuilder.Create()
.WithIdentity("updateSubscriptions", "updateGroup")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInHours(24)
.RepeatForever()
)
.Build();
scheduler.ScheduleJob(subscriptionsJob, subscriptionsTrigger);
}
}
Теперь, всякий раз, когда это выполняется, кажется, что два потока фактически выполняют это, создавая непредвиденные проблемы, когда код выполняется дважды.
Я не совсем уверен, почему это происходит? Кто-нибудь может увидеть, что я мог сделать неправильно?
Стоит отметить, что это приложение umbraco
Обновление
Обратите внимание, что моя работа имеет атрибут DisallowConcurrentExecution
:
[DisallowConcurrentExecution]
public class UpdateSubscriptions : IJob
{
Обновление журнала
Итак, я проверил мой журнал и, как и ожидалось, над файлом работают два рабочих потока:
P19484/D2/TDefaultQuartzScheduler_Worker-3
P166696/D2/TDefaultQuartzScheduler_Worker-1