2012-04-25 7 views
0

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

私が取り組んでいる問題は、テキストボックスにすばやく入力すると、フィルタリングされたアイテムのリストを取得するための複数の非同期呼び出しがキックオフされ(キーの押下ごとに1つずつ)、必ずしも同じ順序で実行されていた - 特にリストが戻ってきたとき。私は本当にすぐHPNを入力した場合

だから、次の呼び出しは

をキックオフ取得 Hと

非同期呼び出しのパラメータとして(#1から231行を返します)パラメータとしてHPで 非同期呼び出しを(#2 - 私は時々、私は結果が他

後に#1を呼び出すために取得しています

私は、WCFサービスを変更カント)1行をrrturnます - パラメータ(#3としてHPNと 非同期呼び出しは)4行を返します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()); 
     } 
    } 
+0

今のところ、WCFメソッドにオブジェクトのUserStateパラメータがあり、_lastAsyncCallという名前のフォームDateTimeプロパティをDateTime.Nowに設定し、それをユーザーの状態として渡してから完了したイベント、私はuserstate <_lastAsyncCall –

答えて

1

を使用して、あなたがコメントに投稿されたものよりもさらに簡単ソリューションは、あなたにも、ユーザーの状態などをパラメータとして送信されたテキストを投稿することです。だから "H"を探しているときは、ユーザー状態として "H"を渡します。

コールが戻ったときは、ユーザー状態=オートコンプリートのテキストのみを使用します。

関連する問題