さて、IObservable
今回紹介するのは、バッファリングするメソッドです。
以下のようなメソッドがあります。
- BufferWithCount
- BufferWithTime
- BufferWithTimeOrCount
IObservable
using System; using System.Linq; using System.Collections.Generic; class Program { static void Main(string[] args) { var sb = new Subject<int>(); // 2つずつに纏める sb.BufferWithCount(2).Subscribe(list => { Console.WriteLine("----"); list.Run(Console.WriteLine); }); sb.OnNext(1); sb.OnNext(2); sb.OnNext(3); sb.OnNext(4); } }
実行結果は以下のようになります。4つOnNextで通知したものが2つずつに纏められてるのがわかると思います。
---- 1 2 ---- 3 4
ちなみに、BufferWithTimeは、TimeSpanのFrom〜メソッドを使って時間を指定してやります。
sb.BufferWithTime(TimeSpan.FromMilliseconds(1000))
Windowsアプリケーションのイベントや外部から通知される値を一定間隔溜めておいて処理するというのに使えそうです。