C# 在Parallel之前返回一些内容。Foreach完成执行
我注意到并行。Foreach正在阻塞线程,直到Foreach循环中的所有任务都完成 对于上面的方法,我希望立即返回true,即使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
这可能吗?您可以在另一个线程中执行并行操作:
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;
}