Reactive Extensionsは、監視可能 (observable) シーケンスとLINQ様式のクエリ演算子を使用して、非同期やイベント ベースのプログラムを作成できるライブラリです。
使用するにはNuGetでSystem.Reactiveをインストールします。
たとえば0.1秒間隔で発生する処理を、0.5秒ごとにまとめて出力するには、次のようにします。
System.Reactive.Subjects.IConnectableObservable<long> sequence
= Observable.Interval(TimeSpan.FromSeconds(0.1)) // 0.1秒間隔
.Take(10) // 10回
.Publish(); // 1つのサブスクリプションを共有するシーケンス
sequence.Buffer(
TimeSpan.FromSeconds(0.5)) // 0.5秒間
.Subscribe(list =>
{
Debug.WriteLine(string.Join(",", list));
});
sequence.Connect(); // ソースへ接続する