2011-07-11 38 views
1

我希望能夠通過觸發器動態創建一個作業,該作業現在會指示作業執行,並在asp.net中提供一個加載對話框應用程序執行作業。作業完成後,我想刪除相關的作業,並從QRTZ_DB中觸發。我提供了兩種執行作業的方式:1)立即運行(我已經說過的問題)2)Schdeule作業,我計劃實施這個作業。Quartz.Net - 立即執行一個作業並刪除ADODataStore中的觸發器和作業

此外,如果有人可以評論如何在該類型的所有實例完成執行之前不允許執行作業。在下一次啓動之前,我沒有足夠的時間執行任務,所以遇到了一些問題。

感謝

+0

SimpleTrigger( 「」,DATATIME .UTCNow)//在指定的時間執行作業,不會重複 – M4V3R1CK

回答

0

只有這樣,才能限制特定作業類型的併發執行是有工作落實IStatefulJob而不是IJob。

6

IStatefulJob已棄用,請使用DisallowConcurrentExecution屬性修飾您的calss。

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; 
+1

我不認爲這會奏效,因爲quartz每次都會實例化一個新的類實例。 –

+0

謝謝泰勒。我明白你的想法。我們可以使用靜態對象來同步邏輯。 – xiaoyifang