これは掲示板での最初の質問です。私は、WCF と MVVM パターンを使用して、初めてのエンタープライズ向けの Silverlight (5) アプリケーションを作成しています。私の問題は、モデル クラスで WCF サービスを呼び出す方法を理解していないことです (ここに問題があります) 。呼び出し元のビュー モデルに結果を返す前に、結果を待ちます。
async および await キーワードの使用法について msdn を調べましたが、どのメソッドを "async" としてマークする必要があるかわかりませんでした。サービスの自動生成された Reference.cs ファイルを変更する必要があるように思えましたが、私には疑問があります。もっと基本的には、WCF を使用することで期待どおりに動作するはずなので、async と await を使用する必要があるかどうかさえわかりません。
とにかく、ここに私が持っているモデルクラスがあります。WCF 呼び出しの完了後に return ステートメントが実行されることを期待していますが、そうではありません。
public class CRMModel
{
ObservableCollection<CarrierInfo> carrierInfoCollection = new ObservableCollection<CarrierInfo>();
public ObservableCollection<CarrierInfo> GetCarrierInformation()
{
var client = new CarrierRateService.CarrierRateServiceClient();
client.GetCarrierInformationCompleted += (s, e) =>
{
var info = e.Result;
carrierInfoCollection = info;
System.Diagnostics.Debug.WriteLine("Just got the result set: " + carrierInfoCollection.Count);
};
client.GetCarrierInformationAsync();
System.Diagnostics.Debug.WriteLine("About to return with: " + carrierInfoCollection.Count);
return carrierInfoCollection;
}
}
おそらくご想像のとおり、結果は次のとおりです。
戻る予定: 0
結果セットを取得しました: 3
助けてくれてどうもありがとう!フランシス