使用 Parallel.ForEach
或 Task.Run()
来异步启动一组任务有什么区别?
版本 1:
List<string> strings = new List<string> { "s1", "s2", "s3" };
Parallel.ForEach(strings, s =>
{
DoSomething(s);
});
第二版:
List<string> strings = new List<string> { "s1", "s2", "s3" };
List<Task> Tasks = new List<Task>();
foreach (var s in strings)
{
Tasks.Add(Task.Run(() => DoSomething(s)));
}
await Task.WhenAll(Tasks);
Task.WaitAll
代替Task.WhenAll
,我认为第二个代码片段几乎与第一个相同。 - avo