Rx.NET:直到指定的计数或计时器结束

时间:2015-09-23 09:12:26

标签: c# linq system.reactive

我有一个接收Observable通知的解决方案,直到指定的计数到达时间阈值。另外,我需要知道发生了哪一个。

想知道是否有更简单的方法(可能不是GroupByUntil)来实现此功能

_values.
.GroupByUntil(_ => true,
              i => Observable.Timer(Threshold, _scheduler)
                             .Amb(i.Buffer(SpecifiedCount).Select(_ => SpecifiedCount)))
// this is for figuring out which one happened: interval elapsed or count filled
.SelectMany(g => g.Count())
// Let's say if count filled first, call Foo()
.Where( i => i == SpecifiedCount ) 
.Subscribe( _ => Foo() )

1 个答案:

答案 0 :(得分:3)

您在寻找Observable.Buffer Method (IObservable, TimeSpan, Int32)吗?根据文件

  

将可观察序列的每个元素指示到一个缓冲区中,该缓冲区在其已满或已经过去一定时间后发出。

你应该写:

var myObservable=_values.Buffer(Threshold,SpecifiedCount);

Window也存在类似的重载。