我目前的解决方案使用ThreadPool来处理事务。每隔几分钟我就抓取1-200个事务,并通过QueueUserWorkItem函数对每个事务进行排队。像这样的东西在哪里“反式”是我交易的集合:线程池到任务转换
For Each t As ManagerTransaction In trans
Threading.ThreadPool.QueueUserWorkItem(AddressOf ProcessManagerTransaction, t)
Next
我想切换过来使用TPL,然而,大量的研究后,我仍然不确定的去了解它的最佳方式。我有以下选择,但我还没有能够就最佳实践达成普遍共识。
1) Threading.Tasks.Parallel.ForEach(trans, AddressOf ProcessManagerTransaction)
其中 “t” 是一个独立的事务在我的 “反式” 收集
2) Task.Factory.StartNew(AddressOf ProcessManagerTransaction, t)
2a) Task.Factory.StartNew(Sub() ProcessManagerTransaction(t)
而这两者的组合:
3) Task.Factory.StartNew(Function() Parallel.ForEach(trans, AddressOf ProcessManagerTransaction))
没有达成共识,因为所有的选项可能是有用的,这取决于究竟你想要的情况。 – svick