我正在使用 Silverlight 5 并尝试编写一个自动完成文本框(我正在使用带有 radcombobox 的 Telerik radwatermarktextbox 控件来显示项目),其项目列表是从异步调用返回的机场列表到 WCF 服务.
我遇到的问题是,如果我在文本框中快速输入,则会启动多个异步调用以获取过滤后的项目列表(每个按键一个),并且它们不一定以与它们相同的顺序完成运行 - 特别是当返回的列表很大时。
所以如果我要快速输入 HPN,下面的调用就会开始
以 H 作为参数的异步调用(#1 - 将返回 231 行) 以 HP 作为参数的异步调用(#2 - 将返回 4 行) 以 HPN 作为参数的异步调用(#3 - 将返回 1 行)
有时我得到的结果是在其他人之后调用#1
我无法更改正在调用的 wcf 服务或向 WCF 服务添加同步方法。
Foxpro 有一个名为 CHRSAW 的函数,它可以告诉您输入缓冲区中是否有键等待(http://msdn.microsoft.com/en-us/library/5skwdb75(v=vs.80).aspx),它可能是用于防止调用#1 和#2。
是否有等效的 .NET 功能/特性可以让我这样做?
这是我正在使用的代码
private void ICAO_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox txt = (TextBox)sender;
if (txt.Text != String.Empty)
{
radBusyIndicator1.IsBusy = true;
_ServiceClient.FindAirportByPartialICAOAsync(txt.Text.Trim().ToUpper());
}
}