C# rx通过时间戳同步多个事件观测值

C# rx通过时间戳同步多个事件观测值,c#,time,system.reactive,C#,Time,System.reactive,我从不同的事件中创建了几个观测值,并使用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中做到这一点

我从不同的事件中创建了几个观测值,并使用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中做到这一点

目标是使时间序列与绘图事件对齐。

以下是一个示例:

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();
}
}
公共类程序
{
公共静态void Main()
{
IObservable Sequence1=可观测的时间间隔(时间跨度从秒(1));
IObservable Sequence2=可观测的时间间隔(时间跨度从秒(1));
//首次认购
Sequence1.Timestamp().Buffer(TimeSpan.FromSeconds(5.0)).Subscribe(item1=>
WriteLine(“缓冲区1:{0}值:{1}”,item1[item1.Count[1]。
Timestamp.ToString(“HH:mm:ss”),item1[item1.Count-1].Value);
//耽搁
《睡眠》(2000年);
//第二次订阅
Sequence2.Timestamp().Buffer(TimeSpan.FromSeconds(5.0)).Subscribe(item2=>
WriteLine(“缓冲区2:{0}值:{1}”,item2[item2.Count-1]。
Timestamp.ToString(“HH:mm:ss”),item2[item2.Count-1].Value);
Console.ReadLine();
}
}

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

您能提供一些代码来告诉我们您当前正在做什么吗?Does
缓冲区(TimeSpan.FromSeconds(5.0))
对您有用吗?不,这不会有帮助,因为。在不同时间启动的多个时间序列不会对齐。这就是
Buffer
所做的,它将在不同时间发生的观察值分组(或对齐)。您必须指定一个允许的时间窗口来将它们组合在一起。
Buffer
会这样做。