クラス構造を考えると:
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
しかし、遅延があるため、それぞれの次の値をプリロードし続けてから、アクセス可能になる順序でfor each を互いにFoo
マージしたいと考えています。IEnumable<Bar>
Foo
Tpl Dataflow async nuget libary (具体的にはTransformBlock
and 程度は低いActionBlock
) を調べてきましたが、私がやろうとしていることを実行するのに役立つものは何も見つかりません。