【问题标题】:Parallel.ForEach: How to block the main thread until all the parallel task finished [duplicate]Parallel.ForEach:如何阻塞主线程直到所有并行任务完成[重复]
【发布时间】:2014-10-11 06:57:59
【问题描述】:

在以下场景中:我们是否可以阻止主线程开始执行步骤 3,直到步骤 2 完成?
我说的是 C#

//step 1: some tasks
/*
*/

//step 2: perform some sub tasks in parallel.
Parallel.ForEach(X, x => Foo(x));

//step 3: Some other task
//Can we begin to perform step 3 until all sub tasks in step 2 finished???

【问题讨论】:

  • Parallel.ForEach 将等待。

标签: c# multithreading parallel-processing


【解决方案1】:

这应该是默认行为。把它放在一个控制台应用程序中,在它后面加上一个 console.writeline 来证明它是否需要。

【讨论】:

    【解决方案2】:

    如果您使用 Task 类来创建您提到的“任务”,不妨试试Task.WaitAll(Task[])

    【讨论】:

    • 他没有使用Task 类,他使用的是Parallel 类。这并没有提供问题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多