rx按时间戳同步多个事件可观察量

时间:2012-11-19 21:25:17

标签: c# time system.reactive

我有几个可以从不同事件创建的observable,并使用sample方法创建相等时间跨度的样本。问题是它们是在不同的时间创建和启动的,因此我获得了相同间隔的时间序列,这些时间序列都被移位了。我不能强制创建时间,因此我想使用参考时间戳来对齐所有这些可观察量。

因此,假设采样间隔为5秒,参考时间戳为01-Jan-1969 00:00:00

我会得到以下时间序列:

19-Nov-2012 08:00:00
19-Nov-2012 08:00:05
19-Nov-2012 08:00:10
....

问题当然是如何在RX中做到这一点。

目标是为情节设定对齐的时间序列形式事件。

1 个答案:

答案 0 :(得分:0)

以下是一个例子:

public class Program
{
    public static void Main()
    {
    IObservable<long> Sequence1 = Observable.Interval(TimeSpan.FromSeconds(1));
    IObservable<long> Sequence2 = Observable.Interval(TimeSpan.FromSeconds(1));
    //1st subscription
    Sequence1.Timestamp().Buffer(TimeSpan.FromSeconds(5.0)).Subscribe(item1 =>
    Console.WriteLine("Buffer 1: {0} Value: {1}", item1[item1.Count[1].
    Timestamp.ToString("HH:mm:ss"), item1[item1.Count - 1].Value));
    //some delay
    Thread.Sleep(2000);
    //2nd subscription
    Sequence2.Timestamp().Buffer(TimeSpan.FromSeconds(5.0)).Subscribe(item2 =>
    Console.WriteLine("Buffer 2: {0} Value: {1}", item2[item2.Count - 1].
    Timestamp.ToString("HH:mm:ss"), item2[item2.Count - 1].Value));
    Console.ReadLine();
}
}

序列1和2是不同的数据源,我想对齐它们,以便例如缓冲区在同一时间戳关闭。