Şu şekilde oluşturduğum görevlerin bir listesi var:
public async Task<IList<Foo>> GetFoosAndDoSomethingAsync()
{
var foos = await GetFoosAsync();
var tasks = foos.Select(async foo => await DoSomethingAsync(foo)).ToList();
...
}
Kullanarak .ToList()
, görevlerin tümü başlamalıdır. Şimdi tamamlanmalarını beklemek ve sonuçları geri vermek istiyorum.
Bu, yukarıdaki ...
blokta çalışır :
var list = new List<Foo>();
foreach (var task in tasks)
list.Add(await task);
return list;
İstediğimi yapıyor, ama bu oldukça beceriksiz görünüyor. Bunun gibi daha basit bir şey yazmayı tercih ederim:
return tasks.Select(async task => await task).ToList();
... ama bu derlemez. Neyi kaçırıyorum? Yoksa olayları bu şekilde ifade etmek mümkün değil mi?
DoSomethingAsync(foo)
Her foo için seri olarak işlem yapmanız gerekiyor mu , yoksa bu Parallel.ForEach <Foo> için bir aday mı?