将WCF方法导入WP7应用程序变为异步并且不返回列表。

时间:2010-12-31 01:04:35

标签: wcf windows-phone-7

我是创建WCF项目以及Windows Phone 7的新手。

我在WCF中创建了一个简单的方法,它只返回一个对象列表。

public List<Sticky> GetSticky()
{
    return stickys;
}

然后我非常简单地使用它

Sticky[] test = client.GetSticky();

当我通过服务引用将WCF dll导入控制台应用程序时,该方法将如何应对。当我将方法导入Windows Phone 7应用程序时,它变为异步方法(不确定这意味着什么)并且不返回列表,它出现无效。

client.GetStickyAsync();

如果有人可以帮助解释发生了什么,并帮助我减少一点困惑。

1 个答案:

答案 0 :(得分:1)

Silverlight希望您避免在UI线程上进行阻塞服务调用,因此它会强制您使用WCF方法调用的非阻塞,异步版本。这意味着调用立即返回,您必须使用相关事件获取调用的结果。您需要做的是在拨打电话之前注册一个事件处理程序。

client.GetStickyCompleted 
    += new EventHandler<ServiceClient.GetStickyCompletedEventArgs>(client_GetStickyCompleted);
client.GetStickyAsync();

方法调用的结果是传递给事件处理程序的参数之一,例如

void client_GetStickyCompleted(object sender, ServiceClient.GetStickyCompletedEventArgs e)
{
    List<Sticky> retList = e.Result;
}