2011-07-11 7 views
1

今実行するように指示するトリガーを使用してジョブを動的に作成し、asp.netでロードダイアログを提供したいと考えていますアプリケーションが実行されます。ジョブが終了したら、関連するジョブを削除してQRTZ_DBからトリガーしたいと思います。私はジョブを実行する2つの方法を提供しています:1)今実行する(私が述べた問題)2)Schdeuleの仕事。これを実現すれば実装する予定です。Quartz.Net - 今すぐジョブを実行し、ADODataStoreのトリガーとジョブを削除する

また、誰かが、そのタイプのインスタンスがすべて完了するまでジョブの実行を許可しないようにコメントすることができます。私は、次の仕事が始まる前に、実行するのに十分な時間がない仕事にいくつか問題がありました。特定のジョブタイプの同時実行を制限する

おかげ

+0

をロックし、オブジェクトを使用することができますSimpleTrigger( ""、DataTime .UTCNow)//指定された時刻にジョブを実行し、繰り返さない – M4V3R1CK

答えて

0

唯一の方法は、そのジョブがIStatefulJob代わりのIJobを実装することです。

6

IStatefulJobは推奨されていません.CalssにDisallowConcurrentExecution属性を付けてください。

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

関連する問題