У меня есть 2 последовательности, которые производят разные данные в разном темпе.
Допустим, один из них - Price
, который производит цены каждую X-миллисекунду.
Вторая последовательность - weather report
, которая создает отчет о погоде каждую Y-миллисекунду.
Мне нужно снимать обе последовательности каждые 30 миллисекунд и обрабатывать их.Ниже приводится мраморная диаграмма того, чего я пытаюсь достичь:
Price : 1--2--3--4--
Weather: ----S-----C-
Time(ms): ------30--60-
Result: ------R1--R2
Где R1 -> Price: (1,2,3), Weather: S
R2 -> Price: 4, Weather: C
Для уточнения, через 30 миллисекунд цена секв.имеет 1, 2, 3
и погоду секв.имеет S
, поэтому я хочу получить результат (1,2,3
) и погоду (S
).Перемотка вперед на 30 миллисекунд, на этот раз цена секв.имеет 4
и погода имеет C
, поэтому теперь я хочу получить цену (4
) и погоду (C
).
Я пытался буферизовать каждую последовательность отдельно, а затем объединить их, используя Zip
priceSequence
.Buffer(TimeSpan.FromMilliseconds(30))
.Zip(
weatherSequence.Buffer(TimeSpan.FromMilliseconds(30)),
(price, weather) => (price, weather))
.Subscribe(Process);
Хотя это работает, это не так, и я думаю, возможно, есть лучший способ добиться этого.
Есть идеи, как это можно сделать?Или вы думаете, что решение, которое я предоставил выше, является хорошим.