【问题标题】:Use methods inside Parallel.ForEach loop在 Parallel.ForEach 循环中使用方法
【发布时间】:2018-03-27 12:16:13
【问题描述】:

我应该使用Parallel.ForEach 循环,并且里面应该有对方法的调用。

Parallel.ForEach(myList, item => {  
   DoSomethingWithItem(item);
 }
);

该方法应该是Task 还是其他?

private Task DoSomethingWithItem(MyClass item);

另外,这个方法不应该有返回类型,但我有警告“不是所有的代码路径都返回一个值”。尝试使用 void 关键字,但似乎与 Task 关键字不在同一上下文中。

【问题讨论】:

    标签: c# .net task parallel.foreach


    【解决方案1】:

    没有

    不要让它变得过于复杂。

    Parallel.ForEach(myList, item => {  
       DoSomethingWithItem(item);
     }
    );
    

    非常适合void DoSomethingWithItem(MyClass item)

    让它“更多”异步充其量是矫枉过正,在最坏的情况下适得其反。

    【讨论】:

    • DoSomethingWithItem 应该执行的任务很少会不会有问题? public void DoSomethingWithItem(MyClass item) { var tasks = new Task[3]; task[0] = DoSomething1(item); task[1] = DoSomething2(item); task[2] = DoSomething3(item); }
    • 并行运行多个任务的语法是不正确的,但一般来说,是的,如果你的方法要启动多个任务并等待所有的,那就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2012-09-19
    相关资源
    最近更新 更多