2014-03-06 30 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

相關問題