2014-03-06 6 views
0

Windows Phone 7.1에서 개발 한 json 문자열을 얻기 위해 웹 서비스 호출을해야하는데 다음 코드를 사용합니다 (클래스에 포함) :Windows Phone에서 웹 서비스 호출을 수행하는 방법

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

웹 호출하기 전에 이벤트 핸들러 (_wc.DownloadStringCompleted)를 추가합니다. 또한

당신이 비동기 메서드를 호출하기 때문에 당신은

await _wc.DownloadStringAsync(....

그렇지 않으면 전혀 비동기 아니에요 일을해야하고, 방법은 비동기 키워드로 작성해야합니다. 나는 당신이 당신의 비동기 지식을 읽을 필요가 있다고 생각합니다.

다음은 유용한 가이드입니다. http://msdn.microsoft.com/en-us/library/hh191443.aspx