У меня есть список объектов, которые мне нужно перебирать параллельно.Вот что мне нужно сделать:
foreach (var r in results)
{
r.SomeList = await apiHelper.Get(r.Id);
}
Так как я хочу сделать parellelize, я попытался использовать Parallel.ForEach (), но он не ждет, пока все действительно завершится, так как apiHelper.Get ()делает ожидание внутри себя.
Parallel.ForEach(
results,
async (r) =>
{
r.SomeList = await apiHelper.Get(r.Id);
});
Так что я искал в Интернете и обнаружил следующее: Вложение ждет в Parallel.ForEach
Теперь я очень новичок вTPL (20 минут) и я могу упустить что-то очевидное.Как мне идти дальше?
var getBlock = new TransformBlock<string, List<Something>>(
async i =>
{
var c = await apiHelper.Get(i);
return c;
}, new ExecutionDataflowBlockOptions
{
MaxDegreeOfParallelism = DataflowBlockOptions.Unbounded
});
foreach (var r in results)
{
r.SomeList = getBlock.Post(r.Id); // ERROR: Can't convert boolean to list.
}
getBlock.Complete();