[英]How to perform a web service call in Windows Phone
我在Windows Phone 7.1中进行开发,我必须进行一些Web服务调用才能获取json字符串,我使用以下代码(即进入类中):
public void GetRegions()
{
if (!_wc.IsBusy)
{
_wc.DownloadStringAsync(new Uri("http://lapiazzashopping.it/test/mobile/getRegions.php"));
_wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted_Regions);
}
}
private void wc_DownloadStringCompleted_Regions(object sender, DownloadStringCompletedEventArgs e)
{
Debug.WriteLine("Web service says: " + e.Result);
Regions = JsonConvert.DeserializeObject<IList<Regions>>(e.Result);
}
现在,在此调用之后,我想更改显示从json获取结果的页面。 如果我通过一个按钮开始调用,并且此按钮与页面更改相同,则编译器将更改页面,但调用尚未完成,因为我无法管理方法“ wc_DownloadStringCompleted_Regions”,该方法最后由编译器以自发方式调用通话的问题,所以我的问题是我不知道通话何时完成,也不知道何时在适当的时候更改页面。
有什么解决方案可以允许我“暂停”代码,直到调用和反序列化完成?
谢谢
在网络调用之前添加事件处理程序( _wc.DownloadStringCompleted
)。
另外,由于您正在调用异步方法,因此您应该这样做
await _wc.DownloadStringAsync(....
否则它根本不是异步的,该方法应使用async关键字编写。 我认为您需要阅读异步知识。
这是一个很好的指南: http : //msdn.microsoft.com/zh-cn/library/hh191443.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.