Проблема:
IEnumerable<Signal> feed = GetFeed();
var average1 = feed.MovingAverage(10);
var average2 = feed.MovingAverage(20);
var zipped = average1.Zip(average2, (x,y) => Tuple.Create(x,y));
Когда я перебираю zip, GetFeed (). GetEnumerator () вызывается дважды и создает всевозможные проблемы с синхронизацией. Есть ли оператор LINQ, который можно использовать для передачи значений от одного производителя нескольким потребителям? Я знаю о Memoize, но в моем случае я не могу предсказать размер буфера, чтобы медленные и быстрые потребители были «счастливы».
Я думаю написать собственный оператор, который будет хранить отдельные очереди для каждого потребителя, но хотел проверить, существует ли существующее решение.