【问题标题】:Rx.Net TestScheduler How to replay events?Rx.Net TestScheduler 如何重放事件?
【发布时间】:2017-09-26 20:52:39
【问题描述】:

我正在尝试了解如何在 c# 中实现以下目标

我有这个类的列表

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

我想创建一个可在 Time 成员变量指定的时间触发 OnNext 的 Observable。我知道 Rx.Net 附带了 TestScheduler,但我不知道如何将它与我拥有的结构一起使用。

我已阅读这篇文章,但不确定如何将其转换为 c#,因为它似乎完全符合我的需要。

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

任何帮助将不胜感激。 罗恩。

【问题讨论】:

    标签: c# .net system.reactive


    【解决方案1】:

    鉴于stocks 是由Time 排序的IEnumerable<StockTickerChangeHistory>

    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); 
    

    【讨论】:

    • @ronMilne 这回答了你的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多