【发布时间】:2011-09-27 18:39:19
【问题描述】:
我正在使用最新版本的 Quartz.NET。我正在使用 AdoJobStore(带有 SqlServer-20 委托)来存储我的作业。我以这种方式创造新工作:
JobDetail jobDetail = new JobDetail("myJob", null, typeof(HelloJob));
jobDetail.JobDataMap["dsa"] = "hello";
CronTrigger trigger = new CronTrigger("MyTrigger", null, "0/1 * * * * ?");
trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow.AddMonths(-3));
trigger.Name = "MyTrigger";
sched.ScheduleJob(jobDetail, trigger);
// 另一个工作
JobDetail jobDetail = new JobDetail("myJob_Bye", null, typeof(HelloJob));
jobDetail.JobDataMap["dsa"] = "Good Bye";
CronTrigger trigger = new CronTrigger("MyTrigger", null, "0/2 * * * * ?");
trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow.AddMonths(-3));
trigger.Name = "MyTrigger2";
sched.ScheduleJob(jobDetail, trigger);
问题是,当我启动调度程序时,它在某些(触发上面配置的作业)时间内工作,然后抛出 SqlException 并显示消息“事务(进程 ID 53)在锁定资源上与另一个进程死锁,并已被选为死锁受害者。重新运行事务。”。 错误发生在 JobStoreSupport.cs 的第 4217 行。看起来锁处理存在问题。任何人都知道我该如何解决这个问题。
附:这个石英组件是我正在玩的自定义构建。我只是在 AdoConstants.cs 和相应的 .sql 文件中更改了表名和列名。
感谢您的支持
【问题讨论】:
标签: .net scheduled-tasks scheduling quartz.net