Chciałbym użyć iteratora .NET z równoległymi zadaniami/poczekać ?. Coś takiego:Jak uzyskiwać z zadań równoległych w .NET 4.5
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 może natywnie sobie z tym poradzić. Najlepsza odpowiedź do tej pory przez @svick - użyj AsParallel().
BONUS: Każdy prosty kod asynchroniczny/oczekujący, który implementuje wielu wydawców i jednego subskrybenta? Subskrybent wyda, a puby będą przetwarzać. (tylko biblioteki rdzeniowe)
Dzięki, ale czy mógłbyś podać przykład tego, jak można to rozwiązać za pomocą async/wait? Dzięki! – Yurik
@Yurik Czy mógłbyś wyjaśnić, dlaczego tego chcesz? – svick
Głównie dlatego, że uważam, że pomoże mi to zrozumieć nową, oczekującą składnię problemu, który nie jest "async 101", ale scenariusz z prawdziwego świata. – Yurik