Windows phone 8 使用Rx去抖动

Windows phone 8 使用Rx去抖动,windows-phone-8,system.reactive,Windows Phone 8,System.reactive,有人建议我应该使用Rx对来自web服务的建议列表的自动完成框的输入进行去盎司处理。显然,我不想在每次击键时运行一个缓慢的更新查询,但另一方面,您也不希望在用户暂停后有太长的延迟 我是这样做的 public partial class MainPage : PhoneApplicationPage { Timer _timerName; public MainPage() { InitializeComponent(); _timerName = new Timer(

有人建议我应该使用Rx对来自web服务的建议列表的自动完成框的输入进行去盎司处理。显然,我不想在每次击键时运行一个缓慢的更新查询,但另一方面,您也不希望在用户暂停后有太长的延迟

我是这样做的

public partial class MainPage : PhoneApplicationPage
{
  Timer _timerName;

  public MainPage()
  {
    InitializeComponent();
    _timerName = new Timer(QueryForNameSuggestions);
  }

  void QueryForNameSuggestions(object state)
  {
    //
  }

  private void searchtermName_TextChanged(object sender, RoutedEventArgs e)
  {
    //Each keystroke resets the timer, 500ms after you stop typing it queries
    _timerName.Change(500, Timeout.Infinite);
  }

}
这是容易理解和工作良好;每次击键(重新)都会启动半秒钟的等待,最终导致查询

我真的不知道如何做同样的事情与Rx,但我愿意考虑的可能性,这将是一个改进。有人能告诉我如何使用Rx实现这一点,并解释Rx方式的优点吗


看起来很接近,但我看不出在不轮询自动完成框的值的情况下如何检测传入的击键,这对我来说似乎不是一个改进。

看看这个演示:

可能的重复不是重复,我已经读过了,它没有告诉我为什么Rx是一个更好的主意。代码更难理解,而且更长。你会注意到,被接受的答案与被指控的重复答案大不相同。被接受的答案是一个没有上下文的链接,当该链接腐烂时,它将是无用的(meta上有大量关于为什么这是一件坏事的评论)。链接副本确实为编码问题提供了一个特定的解决方案,但没有进入关于Rx是否“更好”的自以为是的主观部分。我很高兴这个链接帮助了你,这是一次很棒的谈话。巴特·德斯米特(一个有着美妙口音的天才,伊姆霍:))在第九频道上发布了很多视频,你可能会觉得很有趣。我认为在这种情况下,链接腐烂不会成为一个问题。MS将channel9保留了很长时间,到它死的时候,没有人会在意。我喜欢他的口音,但不是在我试图吸收一种扭曲思维的范式转变时。而且,这是答案的错误,而不是问题的错误。谢谢你阅读并理解我问题的本质。这正是我想要的。要是他听起来不像瑞典厨师就好了:)