Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Task.run和not将项目发布到TPL操作块_C#_Task_Task Parallel Library - Fatal编程技术网

C# 使用Task.run和not将项目发布到TPL操作块

C# 使用Task.run和not将项目发布到TPL操作块,c#,task,task-parallel-library,C#,Task,Task Parallel Library,我是TPL图书馆的新手,有一个简单的问题我没有找到答案 像这样调用TPL块有什么区别(如果有的话): foreach (var t in paramsLisr) { someBlock.Post(t); } vs 你的第二个例子是完全多余的,几乎是错误的。启动任务以发布到操作块没有意义 ActionBlock等,使用内部缓冲区,并将无缝地使用消息(除非您设置了BoundedCapacity)。即使您已经设置了BoundedCapacity,使用任务进行post也是错误的方法,并且您可能应该

我是TPL图书馆的新手,有一个简单的问题我没有找到答案

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

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


你的第二个例子是完全多余的,几乎是错误的。启动任务以发布到操作块没有意义


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

您的第二个示例是完全冗余的,几乎是错误的。启动任务以发布到操作块没有意义


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

这将对您有所帮助。这将对您有所帮助。感谢您的澄清,此代码是否也是一种不好的方法?”代码'Parallel.ForEach(collection,t=>{someBlock.Post(t);})@Zlex这取决于你在做什么,你正在使用TPL ForEach的事实表明,你正在做的事情可能已经是管道的一部分了。我并不是说在任何情况下都没有任务和线程可以发布到一个块中,但是从目前的情况来看,我认为您提供的信息中没有任何理由。为什么你需要这样做?现在我只是想了解TPL库,在我做任何事情之前,我只是想知道什么是错的,什么是对的。我现在有两个块相互链接,我的边界容量是10,在未来我希望每次能得到100张图片,处理10张(在第一个块)我不想等到TPL第二区结束后再发布下一个任务
BoundedCapacity
不是你想要的,你想要的,
MaxDegreeOfParallelism
谢谢你的澄清,这个代码也是一个糟糕的方法吗?”代码'Parallel.ForEach(collection,t=>{someBlock.Post(t);})@Zlex这取决于你在做什么,你正在使用TPL ForEach的事实表明,你正在做的事情可能已经是管道的一部分了。我并不是说在任何情况下都没有任务和线程可以发布到一个块中,但是从目前的情况来看,我认为您提供的信息中没有任何理由。为什么你需要这样做?现在我只是想了解TPL库,在我做任何事情之前,我只是想知道什么是错的,什么是对的。我现在有两个块相互链接,我的边界容量是10,在未来我希望每次能得到100张图片,处理10张(在第一个块)我不想等到TPL第二个区块结束后再发布下一个任务
BoundedCapacity
不是你想要的,你想要的,
MaxDegreeOfParallelism
foreach (var t in paramsLisr)
{
 Task.run(()={someBlock.Post(t)});                        
}