在Parallel.ForEach中使用await并不是一個好的選擇,因為Parallel.ForEach是用于并行執行多個任務的,而await是用于等待單個任務完成的。如果在Parallel.ForEach中使用await,會導致整個循環變成同步執行,失去了并行執行的效果。
如果需要在Parallel.ForEach中等待每個任務完成,可以使用Task.WhenAll方法來等待所有任務完成,示例如下:
List<Task> tasks = new List<Task>();
Parallel.ForEach(items, item =>
{
Task task = Task.Run(async () =>
{
// 執行異步操作
await DoSomethingAsync(item);
});
tasks.Add(task);
});
await Task.WhenAll(tasks);
在上面的示例中,我們首先創建一個包含所有任務的List,然后在Parallel.ForEach中執行異步操作,并將每個任務添加到List中。最后,使用Task.WhenAll方法等待所有任務完成。這樣就能夠在并行執行異步操作的同時等待所有任務完成。