但是,Task.Run
在循环中使用Parallel.ForEach
时有一个缺点-With ,Partitioner
它的创建是为了避免执行不必要的任务。Task.Run
(因为您正在执行此操作)将始终为每个项目执行单个任务,但是Parallel
类批次可以工作,因此您创建的任务少于总工作项。这可以提供明显更好的整体性能,尤其是在循环体每个项目工作量较小的情况下。
await Task.Run(() => Parallel.ForEach(strings, s =>
{
DoSomething(s);
}));
请注意,这也可以用以下简短形式编写:
await Task.Run(() => Parallel.ForEach(strings, DoSomething));