给定类结构:
public class Foo
{
public IEnumerable<Bar> GetBars()
{
for(int i = 0; i < 1000; i++)
{
Thread.Sleep(1000);
yield return new Bar() { Name = i.ToString() };
}
}
}
public class Bar
{
public string Name { get; set; }
}
我有列表,并且在方法IEnumerable<Foo>
中检索下一个的时间很慢(上面用 模拟)。Bar
GetBars()
Thread.Sleep(1000)
我想做以下事情:
myFoo.AsParallel().SelectMany(foo => foo.GetBars().Select(bar => bar.Name))
但是由于延迟,我想继续Bar
为每个预加载下一个值Foo
,然后按照它们变得可访问的顺序将IEnumable<Bar>
每个值Foo
合并到彼此中。
我一直在研究 Tpl Dataflow 异步 nuget 库(特别是TransformBlock
在较小程度上ActionBlock
),但找不到任何可以帮助我做我想做的事情的东西。