我目前的解決方案使用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