2012-06-25 4 views
0

После поиска в Сети в течение примерно 4 часов я все еще не понимаю функции Async на Windows Phone 7. Я попытался запустить этот код, но это похоже на событие «DownloadStringCompleted» для моего webClient никогда не поднимается. Я попытался подождать здесь ответа, но он просто заморозит мое приложение. Кто-нибудь может помочь и объяснить, почему он не работает?Windows Phone 7.1 HTTP GET с DownloadStringAsync

internal string HTTPGet() 
    { 
     string data = null; 
     bool exit = false; 
     WebClient webClient = new WebClient(); 
     webClient.UseDefaultCredentials = true; 

     webClient.DownloadStringCompleted += (sender, e) => 
     { 
      if (e.Error == null) 
      { 
       data = e.Result; 
       exit = true; 
      } 
     }; 

     webClient.DownloadStringAsync(new Uri(site, UriKind.Absolute)); 

     //while (!exit) 
     // Thread.Sleep(1000); 

     return data; 
    } 

Ok. Найди что-то! http://blogs.msdn.com/b/kevinash/archive/2012/02/21/async-ctp-task-based-asynchronous-programming-for-windows-phone.aspx Yay! :)

ответ

3

Не проблема с эмулятором. вы хотите вернуть данные из вашего метода HttpGet(), но данные уже возвращены (как null) до того, как произойдет фактический ответ от webClient. поэтому я предлагаю вам внести некоторые изменения в код и попробовать.

WebClient client = new WebClient(); 
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
client.DownloadStringAsync(new Uri(site, UriKind.Absolute)); 

, а затем в обработчике события DownloadCompleted (или обратного вызова), вы manupulate фактический результат

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 
    var response= e.Result; // Response obtained from the site 
} 
+0

Так что нет никакого способа, чтобы получить, что в товару же способом? – Hazardius

+1

Это то, что было с Async, вы не можете быть уверены, когда он закончит загрузку. Поэтому он просто возвращается в обработчик событий, когда это делается. – Cheesebaron

+0

Я принял это. Спасибо за помощь. – Hazardius

Смежные вопросы