围绕新产品有相当多的炒作 反应式框架 在.NET 4.0 中。虽然我认为我理解了它的基本概念,但我并不完全相信它有那么有用。你能想出一个很好的例子(很容易理解)来完全展示 Rx 的强大功能和实用性吗?展示一些在 Rx 完成后让生活变得更加轻松的东西。

有帮助吗?

解决方案

下面是一个简单的例子。编程以完全声明性方式拖动操作时,使用LINQ到的事件。

   //Create an observable with the initial position and dragged points using LINQ to Events
   var mouseDragPoints = from md in e.GetMouseDown()
                           let startpos=md.EventArgs.GetPosition(e)
                           from mm in e.GetMouseMove().Until(e.GetMouseUp())
                           select new
                           {
                             StartPos = startpos,
                             CurrentPos = mm.EventArgs.GetPosition(e),
                           };

和吸取startpos一行当前正

//Subscribe and draw a line from start position to current position  
            mouseDragPoints.Subscribe  
                (item =>  
                { 
                  //Draw a line from item.Startpos to item.CurrentPos
                }
                ); 

正如你所看到的,有没有事件处理遍布的地方,也没有布尔变量管理的状态。

如果您想了解那些GetEventName()方法,建议你阅读整篇文章和下载源代码,并使用它。

这儿读,玩与源 >>

其他提示

我最近在我的博客上一步步写了一个演示: http://blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and-slides/

我基本上是在 WPF 中使用 Rx 和 Bing 搜索构建一个小型应用程序:

enter image description here

该应用程序将等到您停止输入,然后进行异步搜索并显示结果。如果在结果出现之前您发出另一个搜索,它将自动删除现有搜索。

您可以通过按Enter或“ GO!”来强制搜索(跳过等待时间)。按钮,可以通过按清除按钮来停止正在进行的搜索。有一个忙碌指示器和一些错误处理(例如,如果网络出现故障)。

涵盖的主要主题:

  • 从事件创建可观察对象(TextChanged、Button.Click 等)
  • 异步委托(异步搜索)
  • TakeUntil 扩展
  • DistinctUntilChanged 扩展(包括自定义等于)
  • 合并扩展
  • 油门延长
  • ObserveOn 扩展(用于 UI 线程同步)

..和更多!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top