Я хотел бы использовать .NET iterator с параллельными задачами/ждут?. Что-то вроде этого:
IEnumerable<TDst> Foo<TSrc, TDest>(IEnumerable<TSrc> source)
{
Parallel.ForEach(
source,
s=>
{
// Ordering is NOT important
// items can be yielded as soon as they are done
yield return ExecuteOrDownloadSomething(s);
}
}
К сожалению,.NET не может справиться с этим. Лучший ответ до сих пор от @svick - используйте AsParallel().
BONUS: Любой простой код async/await, который реализует несколько издателей и одного абонента? Абонент уступит, и пабы будут обрабатываться. (только для основных библиотек)