Quartz.Net - 立即执行作业并删除ADODataStore中的触发器和作业

时间:2011-07-11 14:58:00

标签: c# asp.net-mvc quartz.net

我希望能够使用触发器动态创建作业,该触发器告诉作业立即执行,并在作业执行时在asp.net应用程序中提供加载对话框。作业完成后,我想删除关联的作业,并从QRTZ_DB触发。我提供了两种执行工作的方法:1)立即运行(我已经说过的问题)2)Schdeule工作......我计划在实现这项工作后实施。

此外,如果有人可以评论如何在完成该类型的所有实例的执行之前不允许执行作业。在下一个工作启动之前,我的工作没有足够的时间执行,我遇到了一些问题。

由于

3 个答案:

答案 0 :(得分:6)

不推荐使用IStatefulJob,使用DisallowConcurrentExecution属性装饰你的calss。

答案 1 :(得分:0)

限制给定作业类型的并发执行的唯一方法是让该作业实现IStatefulJob而不是IJob。

答案 2 :(得分:0)

除了IStatefulJob之外的另一种方式

根据您的描述,您可以使用锁和对象,例如

static Object obj=new Object();//class field

.........
lock(obj)
{
    your logic goes here.
}

或者有些像这样,

//class field
static Object obj=new Object();
bool executing=false;
.....

if(executing)
    return;
lock(obj)
{
    executing=true;
    your logic goes here.
}
executing=false;