Jak uzyskać z równoległych zadań w .NET 4.5
Chciałbym użyć iteratora .NET z równoległymi zadaniami / czekać ?. Coś takiego:
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);
}
}
Niestety .NET nie obsługuje tego natywnie. Najlepsza do tej pory odpowiedź @svick - użyj AsParallel ().
BONUS: Dowolny prosty kod asynchroniczny / oczekujący, który implementuje wielu wydawców i jednego subskrybenta? Abonent zrezygnuje, a puby będą przetwarzane. (tylko podstawowe biblioteki)