Quali sono le differenze tra l'utilizzo di Parallel.ForEach o Task.Run () per avviare una serie di attività in modo asincrono?
Versione 1:
List<string> strings = new List<string> { "s1", "s2", "s3" };
Parallel.ForEach(strings, s =>
{
DoSomething(s);
});
Versione 2:
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
invece diTask.WhenAll
.