假设我有一个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。这实际上是一个重复的问题,因此我已将其标记为这样。

10-06 04:50