我想将 .NET 迭代器与并行任务/等待一起使用?像这样的东西:
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()。
奖励:任何实现多个发布者和单个订阅者的简单异步/等待代码?订阅者会屈服,而 pubs 会处理。(仅限核心库)