最近.NET 4.0中的响应式框架引起了很大的关注。虽然我认为我理解了它的基本概念,但我并不完全认同它的实用性。你能否提供一个好的例子(易于理解),充分展示Rx的强大和实用性?展示一些使用Rx可以让生活变得更加容易的东西。
最近.NET 4.0中的响应式框架引起了很大的关注。虽然我认为我理解了它的基本概念,但我并不完全认同它的实用性。你能否提供一个好的例子(易于理解),充分展示Rx的强大和实用性?展示一些使用Rx可以让生活变得更加容易的东西。
这里是一个快速的示例。使用LINQ to events以完全声明性的方式编写拖动操作。
//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),
};
从起始位置到当前位置画一条线
//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/
我基本上是在使用Rx和Bing搜索构建一个小型的WPF应用程序:
该应用程序将等待您停止输入,然后执行异步搜索并呈现结果。如果在结果出现之前您发出另一个搜索请求,它将自动放弃现有的搜索。
您可以通过按ENTER或“Go!”按钮来强制搜索(跳过等待时间),并且可以通过按Clear按钮来停止正在进行的搜索。有繁忙指示器和一些错误处理(例如,网络中断)。
主要涵盖的主题:
..等等!