在Parallel.Foreach完成执行之前返回一些东西

时间:2014-12-23 16:51:44

标签: c# parallel-processing task parallel.foreach

public bool SampleMethod()
{
    Parallel.ForEach(List, Val =>
    {
        // execute some time consuming code
    });
    return true;
}

我注意到Parallel.Foreach正在阻塞该线程,直到foreach循环中的所有任务都完成为止。

对于上面的方法,我想立即返回true,即使Parallel.foreach块中的操作仍在执行(它们仍应在后台运行,直到所有这些操作都完成)。

这可能吗?

1 个答案:

答案 0 :(得分:3)

您可以在另一个线程中执行并行操作:

public bool SampleMethod()
{
     Task.Run(() => {
                       Parallel.ForEach(List, Val =>
                       {
                          // execute some time consuming code
                       });
                    });
    return true;
}

这将在一个单独的线程中启动任务并返回true而不等待它完成。