DownloadStringTaskAsync на WP7 зависает при получении Result - PullRequest
0 голосов
/ 23 июня 2011

Я преобразовал кучу кода WP7 для использования DownloadStringTaskAsync вместо DownloadStringAsync, используя Async CTP SP1. Это не сработало, поэтому я свел свой код в кучу и в итоге получил следующие 2 строки:

var wc = new WebClient();
var result = wc.DownloadStringTaskAsync("http://www.weather.gov").Result;

Если я запускаю этот метод с консольным приложением на моем компьютере с Windows. Это работает, как я ожидаю, и я получаю строку с содержимым weather.gov. Если я запускаю те же 2 строки в конструкторе приложения в пустом приложении WP7, он зависает, ожидая, пока Result станет доступным.

Может кто-нибудь помочь мне исправить эти линии, чтобы они работали на телефоне? Или это ошибка в CTP, и я должен сейчас ее пропустить.

1 Ответ

2 голосов
/ 23 июня 2011

Windows Phone возвращает HTTP-запросы в потоке пользовательского интерфейса. Получая доступ к Result, вы блокируете поток пользовательского интерфейса, что делает невозможным возврат ответа.

Учитывая, что вы используете асинхронную CTP, зачем вам вообще блокировать?

var result = await wc.DownloadStringTaskAsync("http://www.weather.gov");
...