LINQ中的发布者/订阅者?

时间:2011-02-07 23:16:06

标签: c# .net linq linq-to-objects publish-subscribe

问题:

    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));

当我遍历“zipped”时,GetFeed()。GetEnumerator()被调用两次并产生各种同步问题。是否有LINQ运算符可用于从单个生产者向多个消费者广播值?我知道Memoize,但在我的情况下,我无法预测缓冲区大小,以保持缓慢和快速的消费者“快乐”。

我正在考虑编写自己的运算符,为每个使用者保留单独的队列,但是想检查是否存在现有的解决方案。

1 个答案:

答案 0 :(得分:3)

你想要的是Reactive Extensions。这就像LINQ to Objects,但反过来说:你没有值,他们通过观察者推送

习惯它需要一点时间,但根据你发布的内容来判断,它是适合你的模型。