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(); // ソースへ接続する