繁体   English   中英

如何在Windows Phone中执行Web服务呼叫

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM