IObservable与普通事件或为什么我应该使用IObservable?

Adi*_*cov 42 events design-patterns .net-4.0 system.reactive

微软在.NET Framework 4中引入了BCL IObservable<T>接口,我想,"太好了,最后,我必须使用它!" 所以我深入挖掘并阅读帖子和文档,甚至实现了模式.

在这样做之后,我意识到基本实现实际上将所有T事件发送给所有订阅者,而不对其进行任何过滤; 即普通广播.我在某处读到了Observable模式用于普通广播.我觉得这不是真的,我错过了一些东西.

我的问题:

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

  2. 应该何时使用此模式,何时应该选择使用普通CLR事件?

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

Ste*_*ary 28

Observable是Rx库的基石.它们提供了您需要的几乎所有实现和运算符.背后的想法IObservable<T>,并Rx不仅仅是"处理"事件,更是为了使"LINQ到事件".因此,您可以轻松编写"事件流",与常规事件处理相比,它可以为您提供更多功能.

需要注意的是样品MSDN执行的IObservable<T>不正确 ; 已通知文档团队.

  • 嗨,感谢您的回复,您能否详细说明“启用“LINQ to Events”。这样您就可以轻松地编写“事件流”或举个例子?adiel。 (2认同)
  • [Rx wiki page](http://rxwiki.wikidot.com/101samples#toc15)有几个LINQ to Events类型的例子.还有着名的"拖放"[视频](http://channel9.msdn.com/posts/J.Van.Gogh/Writing-your-first-Rx-Application/). (2认同)
  • +0 我敢打赌,您对您尚未提供的 #2 有很多见解:P (2认同)