假设我有一个Observable<LogEntry>
,其中LogEntry
具有属性TimeStamp
(当然还有其他属性)。 LogEntry
是通过读取日志文件创建的。
public IObservable<LogEntry> GetLogRecords()
{
return Observable.Create<LogEntry>(
(IObserver<LogEntry> observer) =>
{
var lines = File.ReadLines(this.filePath);
var enumerator = lines.GetEnumerator();
while (enumerator.MoveNext())
{
string line = enumerator.Current;
if (!line.StartsWith("#"))
{
var entry = new LogEntry(line);
observer.OnNext(entry);
}
}
observer.OnCompleted();
return Disposable.Create(() => Console.WriteLine("Unsubscribed"));
});
}
该Observable将与读取文件一样快地“触发”。
我想要的是按倒数第二个和最后一个LogEntry.TimeStamp之间的时间间隔来间隔(延迟)事件
例如。沿线的东西
var replayObs = GetLogEntries().Delay(calculatedTimeDiff);
最佳答案
在日志文件事件上创建一个常规的枚举(可以根据需要延迟或不延迟),然后查看Observable from list of timetamps。这实际上是一个重复的问题,因此我已将其标记为这样。