我有一个带有静态项目的冷观察,我需要在每个项目之间有一些时间延迟,我已将它与我通过Observable.Timer
的另一个IObservable相结合。我正在使用Zip
。
var ob1 = Observable.Range(1, 100);
var ob2 = Observable.Timer(TimeSpan.FromSeconds(1.0));
var myObservable = Observable.Zip(ob1, ob2, (a, b) => b);
myObservable.Subscribe(a => Console.WriteLine("Item encountered"));
///Allow enough time for Timer observable to give back multiple ticks
Thread.Sleep(3000);
但输出只打印"物品遇到"一旦。我错过了什么?
答案 0 :(得分:4)
为了确认评论,Observable.Interval
只是一个参数的方法 - 因此它一直是!
答案 1 :(得分:2)
我找到了解决方案。 Observable.Timer为我的场景采用两个参数,第一个是第一个项目的到期时间,第二个到期时间用于所有后续项目。如果只提供了一个TimeSpan
参数,那么它只会产生一个项目。
Observable.Timer(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0));