2

Quartz .NET を使用して単純なスケジューラーを開発しています。Quartz がすべてのジョブとトリガーをデータベースに永続化したいので、AdoJobStore を設定すると、「通常の」ジョブで問題なく動作します。

現在、データベースの一般的なジョブからの逆シリアル化に問題があります。授業がある:

class DefaultJob<TEventType, TArgsType> : IJob{
 public void Execute(IJobExecutionContext context)
 {
         //do sth
 }
}

RamJobStore と DefaultJob<,> を使用すると、作業をスケジュールして実行することができます。

AdoJobStore と DefaultJob<,> を使用すると、スケジュールを設定できます。Quartz はそれをデータベースに保存します (Management Studio で確認できます)が、データベースから復元しようとすると、次のようになります。

A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
A first chance exception of type 'Quartz.JobPersistenceException' occurred in Quartz.dll
A first chance exception of type 'Quartz.JobPersistenceException' occurred in Quartz.dll

JobFactory をデバッグしましたが、メソッド NewJob はまったく呼び出されません。その前に異変が起きます。

誰でも助けることができますか?

4

2 に答える 2

2

公式QuartzメーリングリストのMarko Lahmaからの回答をここに転送します。

Quartz.NET はジェネリック ジョブ タイプをサポートしていません。ジェネリック定義を持つ基本クラスを持つことで簡単に表現でき、すべてのジョブがこのクラスを継承してジェネリック タイプを定義するだけで簡単に表現できるため、そうすべきではないと感じています。

于 2012-09-09T09:48:36.423 に答える