如何使用ria异步调用放置return语句

时间:2012-09-28 04:40:10

标签: silverlight wcf-ria-services

我有一个方法需要返回布尔值,在我的方法中我需要做一个异步调用来决定返回true还是false。我试图将return语句放在lambda表达式中,但它抛出返回类型是' void' 错误

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

    return value;
}

1 个答案:

答案 0 :(得分:1)

你不能那样编码。 Silverlight将不允许您查询Web服务并冻结UI,直到Web服务返回。 Silverlight的异步模型更像是javascript,您可以在其中进行调用,当结果返回时,您可以决定使用它做什么。

一种方法是将调用者的代码更改为:

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

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

    return value;
}