等待"最后"事件要发射

时间:2016-03-23 09:38:10

标签: c# .net events asynchronous async-await

我需要阻止执行代码,直到用户输入TextBox

然而,在这种特殊情况下,我实际上需要等待#34;直到用户输入"。也就是说,我不想等到TextChanged事件第一次触发,我想要等到自上次触发后至少500ms已经过去,然后再继续执行我的方法。

目前我有一些使用计时器的东西,每次TextChanged事件触发计时器重启时,当计时器的Tick事件触发时,意味着用户"有完成打字"。

现在这种方法存在三个主要问题:

  • 必须有比使用Timer更好/更清洁的方式
  • 到目前为止,我还不需要阻止执行直到用户输入",所以基本上只是将我的代码添加到Tick事件处理程序中,这不是虽然改变了。
  • 我也需要设置超时,这样如果用户在一段时间内没有完成输入,它应该返回到方法,因为没有等待用户。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

使用ReactiveUI非常容易。查看主页面上的示例。它或多或少地与你所追求的完全相同。

它基于Reactive Extensions (RX)用于.Net,旨在使这些内容变得简单。如果使用ReactiveUI不是一个选项,那么我建议你看看RX以及ReactiveUI如何实现它。