これは適切ではないかもしれません。タスクパラレルで多くのタスクを何度も処理します
私たちは現在、別のユーザーから開始され、 'ジョブ'のIDで渡されるコンソールアプリケーションを持っています。このジョブには、処理が必要な複数のレコードがあります。フローの簡単な説明は次のとおりです。
Starts 50 threads
Gets records to be processed.
if records > 0 see what threads are not still busy and send it some information.
if records = 0 update something else and exit.
Get more records.
Loop.
これを継続的に実行されている「ポーリング」サービスに変換し、新しいレコードが利用可能になった時点で処理したいと考えています。私が持っているものを取ってこれを変換するのはかなりシンプルですが、スレッドのものは古く、おそらく時代遅れです。
私はすべてではないにしてもほとんどをリファクタリングし、Task.Parallelを使用してアイテムを処理しようとしていました。しかし、私はアイテムをポーリングして処理するための適切なフレームワークを得るのには苦労しており、これを達成するための提案を探していました。
私は知っていますが、うまくいけば何らかのインプットを与えることができます。
多くのおかげで、私の経験から
これらのレコードの元の場所を説明できますか?彼らはデータベースに追加されますか? –
現在のところリストですが、最終的にDBから来ています。それらは1000のバッチでロードされ、スレッドプールに送られます。そのバッチに処理されるものが残っていなければ、より多くをチェックします。 –
ChrisBint
これはSQL Serverとの話ですか? –