我是创建WCF项目以及Windows Phone 7的新手。
我在WCF中创建了一个简单的方法,它只返回一个对象列表。
public List<Sticky> GetSticky()
{
return stickys;
}
然后我非常简单地使用它
Sticky[] test = client.GetSticky();
当我通过服务引用将WCF dll导入控制台应用程序时,该方法将如何应对。当我将方法导入Windows Phone 7应用程序时,它变为异步方法(不确定这意味着什么)并且不返回列表,它出现无效。
client.GetStickyAsync();
如果有人可以帮助解释发生了什么,并帮助我减少一点困惑。
答案 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;
}