2016-11-11 5 views
0

誰もがPersistJobDataAfterExecutionについて語りますが、私がやっていることに関心がない、ジョブをもう一度実行しないとうまくいかないようです。初めてうまくいくと2回仕事をするのはなぜですか?さらに、それが永続するなら、どこに? JobDetailは実行後に存在しません。クォーツ - ジョブの実行後のデータを取得する

私はJobDataMapにデータを格納し、ジョブの進行状況を取得するためにを使用しています。これは、(ajax Web呼び出しを介して)を実行中です。ジョブが実行を終了すると、を削除します。それはそれ自身のトリガーなので、スケジューラーはJobDetailを持たず、したがってJobDataMapもありません。

通常、データはアプリケーションキャッシュに保存されますが、このデータはユーザーセッションに固有のものなので、保存できません。 ASP.net HttpContextは、Quartzスレッドからは使用できません。

スレッドが完全に独立していて、ジョブを一時停止してジョブを中断したときに実行された(過去時制の)クォーツジョブからデータを取得するには、どちらも実行完了と同じ結果になります)それはそれ自身を破壊するか?

私は実際に無限のスリープループを実行して、外部からデータを取得してから強制終了する必要がありますか?

答えて

0

スレッドセーフなので、HttpRuntime.Cacheを使用してしまいました。 これは、圧倒的な選択肢ではなく、 スリープループ(ハッキング)、ADO(bleh)を使用するための石英の変更、SynchronizationContextへのポスト(不安定)、またはディスクへの書き込みを使用してジョブを2回呼び出す(PersistJobDataAfterExecution)スーパーブリー)。

関連する問題