Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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# 在Parallel之前返回一些内容。Foreach完成执行_C#_Parallel Processing_Task_Parallel.foreach - Fatal编程技术网

C# 在Parallel之前返回一些内容。Foreach完成执行

C# 在Parallel之前返回一些内容。Foreach完成执行,c#,parallel-processing,task,parallel.foreach,C#,Parallel Processing,Task,Parallel.foreach,我注意到并行。Foreach正在阻塞线程,直到Foreach循环中的所有任务都完成 对于上面的方法,我希望立即返回true,即使Parallel.foreach块中的操作仍在执行,它们仍应在后台运行,直到所有操作都完成 这可能吗?您可以在另一个线程中执行并行操作: public bool SampleMethod() { Parallel.ForEach(List, Val => { // execute some time consuming code

我注意到并行。Foreach正在阻塞线程,直到Foreach循环中的所有任务都完成

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


这可能吗?

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

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

这将在单独的线程中启动任务,并在不等待任务完成的情况下返回true。

使用任务API在后台执行,并行API不用于此目的。您可以启动任务,而不必等待任务完成并在启动所有任务后返回true。单独的线程可以让后台线程继续工作,即使进程返回并退出,还是前台线程需要主进程线程才能退出
public bool SampleMethod()
{
     Task.Run(() => {
                       Parallel.ForEach(List, Val =>
                       {
                          // execute some time consuming code
                       });
                    });
    return true;
}