我使用Async CTP SP1将一堆WP7代码转换为使用DownloadStringTaskAsync而不是DownloadStringAsync。它没有工作,所以我把我的代码简化了一堆,最后得到了这两行:
var wc = new WebClient();
var result = wc.DownloadStringTaskAsync("http://www.weather.gov").Result;
如果我在Windows机器上使用控制台应用程序运行此方法。它按预期工作,我得到一个包含weather.gov内容的字符串。如果我在一个空白的WP7应用程序中在App的构造函数中运行相同的2行,它会在等待Result变为可用时挂起。
任何人都可以帮我修理这些线路,以便他们可以在手机上工作吗?或者这是CTP中的一个错误,我现在应该跳过它。
答案 0 :(得分:2)
Windows Phone在UI线程上返回HTTP请求。通过访问Result
,您将阻止UI线程,从而使响应无法返回。
考虑到您正在使用异步CTP,为什么要阻止?
var result = await wc.DownloadStringTaskAsync("http://www.weather.gov");