Как уступить из параллельных задач в .NET 4.5

Я хотел бы использовать .NET итератор с параллельными задачами / await ?. Что-то вроде этого:

IEnumerable Foo(IEnumerable 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 ().

БОНУС: Какой-нибудь простой асинхронный / ожидающий код, который реализует несколько издателей и одного подписчика? Подписчик уступит, а пабы обработают. (только основные библиотеки)

Ответы на вопрос(3)

Ваш ответ на вопрос