使用Reactive Extensions重播带时间戳的事件流

gho*_*ord 2 c# system.reactive

我有以下类的项目集合:

public class Event
{
    public DateTimeOffset Timestamp;
    public object Data;
}
Run Code Online (Sandbox Code Playgroud)

我想创建IObservable<Event>Timestamp将来发布每个项目的位置.这是可能的,Observable.Delay还是我必须编写自己的IObservable<T>实现?

我会提到这个结构就像一个日志文件.可以有成千上万的Event项目,但每秒只能发布1-2项.

gho*_*ord 5

事实证明,使用Observable.Delay可变时间的过载非常简单:

//given IEnumerable<Event> events:
var observable = events.ToObservable().Delay(ev => Observable.Timer(ev.Timestamp));
Run Code Online (Sandbox Code Playgroud)