使用Task.run和不使用,将项目发布到TPL操作块

时间:2019-01-15 05:44:36

标签: c# task task-parallel-library

我是TPL库的新手,有一个简单的问题,我找不到答案。

像这样调用TPL块之间有什么区别(如果有的话):

foreach (var t in paramsLisr)
{
  someBlock.Post(t);
}

vs

foreach (var t in paramsLisr)
{
 Task.run(()={someBlock.Post(t)});                        
}

1 个答案:

答案 0 :(得分:2)

您的第二个示例是完全多余的,并且有误。没有必要开始将任务发布到动作块。

ActionBlock等,使用内部缓冲区,将无缝使用消息(除非您已设置BoundedCapacity)。即使您使用BoundedCapacity设置Task来发布消息也是错误的方法,并且您可能应该使用另一个块来缓冲消息