2017-09-25 23 views
2

我想了解如何实现在C#以下Rx.Net TestScheduler如何重放事件?

我有这个类的List

public class StockTickerChangeHistory 
{ 
    public DateTime Time; 
    public string Stock; 
} 

我想创建一个可观察的是火灾OnNext的由指定的时间时间成员变量。我知道Rx.Net附带了TestScheduler,但我对如何将它与我拥有的结构一起使用感到茫然。

我读过这篇文章,但不知道如何将其转换为C#,因为它看起来正是我所需要的。

https://blog.niallconnaughton.com/2015/05/09/time-travel-with-reactive-extensions/

任何帮助将不胜感激。 Ron。

回答

0

鉴于stocksTime

var scheduler = new TestScheduler(); 

//Convert to array of OnNext notifications and create an Observable 
var history = stocks.Select(i => OnNext(i.Time.Ticks, i)).ToArray(); 
var stockHistoryObservable = scheduler.CreateHotObservable(history); 

//Create an observer and subscribe 
var observer = scheduler.CreateObserver<StockTickerChangeHistory>(); 
stockHistoryObservable.Subscribe(observer); 

scheduler.AdvanceTo(dateWhenNoHistoryYet); //no history 
observer.Messages.AssertEqual(); 
scheduler.AdvanceTo(dateWhenHistoryIsCompleted); //all history arrived 
observer.Messages.AssertEqual(history); 
下令 IEnumerable<StockTickerChangeHistory>