0

私は Silverlight 5 で作業しており、アイテムのリストが WCF サービスへの非同期呼び出しから返された空港のリストであるオートコンプリート テキスト ボックスを作成しようとしています (アイテムを表示するために、radcombobox で telerik radwatermarktextbox コントロールを使用しています)。 .

私が直面している問題は、テキストボックスにすばやく入力すると、フィルタリングされたアイテムのリストを取得するための複数の非同期呼び出しが開始され (キーを押すたびに 1 つ)、必ずしも同じ順序で終了するとは限らないことです。実行されました - 特に戻ってくるリストが大きい場合。

したがって、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());
        }
    }
4

1 に答える 1

1

コメントに投稿したものよりもさらに簡単な解決策は、送信するテキストをパラメーターとしてユーザー状態として投稿することです。したがって、「H」を探すときは、ユーザー状態として「H」を渡します。

呼び出しが戻ってきたら、ユーザー状態 = オートコンプリートのテキストのみを使用します。

于 2012-04-25T19:07:01.890 に答える