私の現在のソリューションは、ThreadPool を使用してトランザクションを処理します。数分ごとに 1 ~ 200 のトランザクションを取得し、QueueUserWorkItem 関数を使用してそれぞれをキューに入れます。「trans」が私のトランザクションのコレクションであるこのようなもの:
For Each t As ManagerTransaction In trans
Threading.ThreadPool.QueueUserWorkItem(AddressOf ProcessManagerTransaction, t)
Next
TPL を使用するように切り替えたいのですが、多くの調査を行った結果、最適な方法がまだわかりません。私は次のオプションを持っていますが、ベストプラクティスが何であるかについての一般的なコンセンサスを見つけることができませんでした.
1) Threading.Tasks.Parallel.ForEach(trans, AddressOf ProcessManagerTransaction)
ここで、「t」は「trans」コレクション内の個々のトランザクションです
2) Task.Factory.StartNew(AddressOf ProcessManagerTransaction, t)
2a) Task.Factory.StartNew(Sub() ProcessManagerTransaction(t)
そして、この2つの組み合わせ:
3) Task.Factory.StartNew(Function() Parallel.ForEach(trans, AddressOf ProcessManagerTransaction))