Проблема возникает, если я хочу вызвать метод, помеченный как async в C#, внутри лямбда-выражения параллельного цикла. Например:
Код: Выделить всё
var bag = new ConcurrentBag();
Parallel.ForEach(myCollection, async item =>
{
// some pre stuff
var response = await GetData(item);
bag.Add(response);
// some post stuff
}
var count = bag.Count;
Код: Выделить всё
var bag = new ConcurrentBag();
Parallel.ForEach(myCollection, item =>
{
// some pre stuff
var responseTask = await GetData(item);
responseTask.Wait();
var response = responseTask.Result;
bag.Add(response);
// some post stuff
}
var count = bag.Count;
Как реализовать цикл Parallel.ForEach, который использует ключевое слово await в лямбда-выражении? Возможно ли это?
Прототип метода Parallel.ForEach принимает Action в качестве параметра, но я хочу, чтобы он ждал мою асинхронную лямбду.