3

Sumと呼ばれる単一の運用契約方式のシンプルなサービスがあります

[OperationContact]
int sum(int i, int q);

WebサービスをSilverlightアプリに統合する場合、次のコードをメインページに追加します。

ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();

sumメソッドは呼び出されません。さらにそれは示しています:

obj.sumAsync(int i, int q)
4

3 に答える 3

4

Silverlight では、Web サービスの同期プロキシを作成できません。非同期サービス プロキシ モデルを使用します。Silverlight では、OperationContract ごとに 2 つのプロパティがあります。

obj.sumAsync(int i, int q, object state)
obj.sumAsyncCompleted; // Event

これを試してください:

private void CallMethod()
{    
    obj.sumAsync(2,2);
    obj.sumAsyncCompleted += (s,e) =>
        {
            if (e.Error == null)
            {
                   MessageBox.Show(e.Result.ToString());
            }
        };
}
于 2012-05-17T08:01:48.297 に答える
1

Silverlight は、非同期プログラミング モデルで動作します。したがって、サービス呼び出しも非同期です。async wcf メソッドを呼び出す前に、サービス操作のコールバックを登録する必要があります。

obj.SumAsyncCompleted += SumAsyncCompleted;
obj.sumAsync(1, 2);

void SumAsyncCompleted(object sender, SumAsyncCompletedEventArgs e)
{
    //do something with e.Result
}
于 2012-05-17T08:10:43.950 に答える
1

メソッドを でマークしていますか[OperationContact]。「操作上の連絡」は意味がありません。

于 2012-05-17T08:01:51.720 に答える