【发布时间】:2013-01-26 04:57:12
【问题描述】:
我想将 .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 会处理。 (仅限核心库)
【问题讨论】:
标签: c# task-parallel-library async-await c#-5.0 yield-return