1

ブール値を返す必要があるメソッドがあり、メソッド内で true または false を返すかどうかを決定するために非同期呼び出しを行う必要があります。return ステートメントをラムダ式の中に入れようとしましたが、return type is 'void'エラーがスローされます

bool method()
{
    domaincontext.Load(domaincontext.GetXXX(),
    loadOperation =>
    {
    value = ???
    }, null);

    return value;
}
4

1 に答える 1

1

そのようにコーディングすることはできません。Silverlightでは、Webサービスが戻るまで、Webサービスにクエリを実行してUIをフリーズすることはできません。Silverlightの非同期モデルは、JavaScriptに似ており、呼び出しを行い、結果が返されたときに、それをどのように処理するかを決定できます。

1つの方法は、呼び出し元のコードを次のように変更することです。

this.method(result => {
  if (result) {
     // Do something
  }
});

void method(Action<bool> continueWith)
{
    domaincontext.Load(domaincontext.GetXXX(),
    loadOperation =>
    {
        value = ???;
        continueWith(value);
    }, null);

    return value;
}
于 2012-09-28T05:11:00.550 に答える