我在构建带有被动扩展的搜索框时遇到了麻烦。 我的目标是每隔X毫秒获取最新文本,进行搜索并将结果发布回UI网格(winforms)。但我坚持第一步。
我可以通过记录看到使用Rx Sample在5000毫秒内触发多个事件,而不仅仅是一个!我预计最多每5000毫秒一次。
我的代码非常简单,我坚信它有效:
EventLoopScheduler scheduler = new EventLoopScheduler(ts => new Thread(ts));
Observable.FromEventPattern<EventArgs>(this.textBox1, "TextChanged")
.Sample(new TimeSpan(5000), scheduler).ObserveOn(this).Subscribe
(
args =>
{
string text = ((TextBox)args.Sender).Text;
Console.WriteLine("Sample fired. Text: {0}", text);
}
);
我正在连接Form的构造函数中的所有内容。 我搞乱了调度程序吗? 谢谢。
答案 0 :(得分:3)
使用new TimeSpan(5000)
代替TimeSpan.FromSeconds(5)
5000个刻度而不是很长时间。