【发布时间】:2012-12-28 20:20:54
【问题描述】:
我当前的解决方案使用 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)
而这两者的结合:
3) Task.Factory.StartNew(Function() Parallel.ForEach(trans, AddressOf ProcessManagerTransaction))
【问题讨论】:
-
没有达成共识,因为所有选项都可能有用,具体取决于您到底想要什么。
标签: vb.net multithreading task-parallel-library threadpool .net-4.5