我有一个方法需要返回布尔值,在我的方法中,我需要做一个异步调用来决定返回真还是假。我试图将 return 语句放在 lambda 表达式中,但它抛出返回类型为"void"错误
bool method()
{
domaincontext.Load(domaincontext.GetXXX(),
loadOperation =>
{
value = ???
}, null);
return value;
}
你不能那样编码。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;
}