【发布时间】:2011-07-27 23:32:59
【问题描述】:
我正在开发一个调度程序,它每 30 秒检查一次数据库中调查表的任何更改。调查表包含 Name、WhenDue 等字段(为简单起见)。
这是我所做的一步一步 - 我实际上使用 Quartz Job,它设置为每 30 秒触发一次以添加更多作业。
- 加载在上次提取日期/时间后修改的所有调查
- Foreach 通过它们并添加新的或更新现有的作业/触发器
程序在我第一次启动时运行良好,它会获取所有调查等。
但是,如果我进行调查并更改某些内容,我的程序会获取更改但它会引发异常
Quartz.JobPersistenceException: Couldn't acquire next trigger: Couldn't retrieve trigger: Transaction (Process ID 59) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.
这不知道为什么会发生这种情况。欢迎提出任何建议,我现在花了几个小时试图找到它。
【问题讨论】:
-
另外,忘记添加了。据我所知,即使抛出异常,quartz.net 数据库也会使用新设置进行更新。
-
我认为正在发生的事情是当我添加/更新触发器 Quartz.Net 正在尝试扫描要触发的新事物,但是我的进程正在添加新触发器,因此它锁定了数据库.有什么想法吗?
标签: c# scheduling deadlock quartz.net