Reactive Extensions (Rx) を使用して、完了したタスクの列挙をバッファリングしようとしています。これを行うためのクリーンな組み込みの方法があるかどうかは誰にもわかりませんか? ToObservable
拡張メソッドは、私が望むものではなく、後で使用できる を作成するIObservable<Task<T>>
だけIObservable<T>
ですBuffer
。
考案された例:
//Method designed to be awaitable
public static Task<int> makeInt()
{
return Task.Run(() => 5);
}
//In practice, however, I don't want to await each individual task
//I want to await chunks of them at a time, which *should* be easy with Observable.Buffer
public static void Main()
{
//Make a bunch of tasks
IEnumerable<Task<int>> futureInts = Enumerable.Range(1, 100).Select(t => makeInt());
//Is there a built in way to turn this into an Observable that I can then buffer?
IObservable<int> buffered = futureInts.TasksToObservable().Buffer(15); //????
buffered.Subscribe(ints => {
Console.WriteLine(ints.Count()); //Should be 15
});
}