2014-03-06 82 views
0

我的Windows Phone 7.1深化发展,我必须做一些Web服务调用来获得一个JSON字符串,我用下面的代码(即到类):如何在Windows手机进行Web服务调用

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” 此方法由编译器在结束通话,所以我的问题是,我无法知道通话何时完成,我无法知道何时在适当的时候更改页面。

有什么解决方案可以让我“暂停”代码,直到调用和反序列化完成?

感谢

回答

0

,添加Web调用之前的事件处理程序(_wc.DownloadStringCompleted)。

此外,由于你调用一个异步方法你应该做

await _wc.DownloadStringAsync(....

否则它不是异步可言的,该方法应与async关键字来编写。我认为你需要阅读你的异步知识。

下面是一个很好的指导经过: http://msdn.microsoft.com/en-us/library/hh191443.aspx

相关问题