2

.Net(3.5)で既存のジョブキューの実装を探していますが、誰かが良いものを提案してくれるかどうか疑問に思っていました。自分のやりたいことができるジョブキューはないと思いますので、簡単に拡張できるジョブキューを探しています。

基本的な要件:

  1. 並列または直列でジョブを実行できる必要があります。一部のジョブはシリアルに実行する必要がある場合があり、一部のジョブは、それらのシリアルジョブが実行されている間でも、並列に実行できる場合があります。
    (技術的には2つのジョブキューを持つことができると思いますが、基本実装はそれでも両方を処理できる必要があります。)
  2. ジョブで進行状況イベントを起動できるようにする必要がありますが、準備ができたときにイベントを起動できるようにするか、UIからのポーリングに基づいてキューに入れてから起動できるようにする必要があります。
    (すべてのイベントをメインGUIスレッドで処理する必要があるため、GUIの更新では、最後の更新以降に発生したすべてのイベントを発生させることを望んでいます。)

ありがとう、
リロン

4

2 に答える 2

2

quartz.netはかなり包括的なジョブスケジューラです

于 2011-05-12T00:16:26.153 に答える
0

私はいくつかの同様のことをしました、そしてそれは本当に基本的にメッセージキューです、それでここに基本的な実装に関するいくつかのメモがあります:

  1. ジョブタイプのキュー(キューが適切な選択である可能性があります)、スレッド、AutoResetEvent、QueueJobメソッド、およびイベント(たとえば、「HandleJob」など)を含むクラスを作成します。
  2. スレッドを起動します。スレッドはイベントを待機してから、キュー内のすべてのジョブを処理する必要があります。ジョブごとに、HandleJobイベントを発生させるだけです。UIスレッドで必要な場合は、イベントハンドラーにInvokeまたはBeginInvokeを使用させるだけです。最後に、キューをクリアします。
  3. QueueJobが呼び出されたら、ジョブをキューに追加し、イベントを通知します。
    • 注:キューアクセスが同期されていることを確認する必要があります

また、並行して実行する必要のあるジョブは、実際にはジョブである必要はないと思います。スレッドプールで実行できます。

ここから、時限実行(たとえば、10秒後に実行する必要があるジョブ)、イテレーターの実行、およびAsyncWaitHandlerを公開するジョブのサポート(たとえば、他のジョブが何かを待機している間に実行できるようにする)を作成できます。

于 2011-05-11T22:57:21.320 に答える