IObservable与平原事件或为什么我应该使用IObservable?

微软向.NET Framework 4引入了BCL的IObservable<T>接口 ,我想,“好极了,我必须使用它!” 所以我深入挖掘并阅读文章和文档,甚至实施了这个模式。

这样做后,我意识到,基本的实现实际上发送所有的T事件到所有的用户没有任何过滤, 即普通广播。 我在某处读到Observable模式是为了普通广播。 我觉得这不是真的,我错过了一些东西。

我的问题:

  1. 如果我添加一个过滤机制,使用Observable模式和使用纯CLR事件有什么区别?

  2. 什么时候应该使用这种模式,什么时候应该select使用简单的CLR事件?

  3. Observable模式的主要优点是什么?

可观察是Rx库的基石。 它们提供了几乎所有需要的实现和操作符。 IObservable<T>Rx背后的想法不仅仅是事件的“处理”,而是“LINQ to事件”。 因此,您可以轻松撰写“事件stream”,与常规事件处理相比,它可以为您提供大量的function。

请注意, IObservable<T>的示例MSDN实现不正确 ; 文档组已被通知。