Reactive Extensions (RX)

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(); // ソースへ接続する
Microsoft Learnから検索