2013-06-25 58 views
2

这是我用来下载一个URL为html的代码。事情是,有什么办法可以做 这个异步?我想知道问题的答案是否成功,以及程序继续之前的回应是什么。如果你可以等待client.DownloadStringAsync和task.delay,它将是完美的,除了我不喜欢设置标准时间等待的想法之外,它并不总是有效。谢谢!异步Web响应Windows Phone 8

 Uri uri = new Uri(url); 
     WebClient client = new WebClient(); 
     client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
     client.AllowReadStreamBuffering = true; 
     client.DownloadStringAsync(uri); 
+0

不要使用异步,然后。使用同步,这将阻塞,直到操作完成 –

回答

4

有两种解决方案。

第一个(我建议)是使用Microsoft.Net.Http NuGet package和更改您的代码以使用新的HttpClient,而不是旧WebClient

Uri uri = new Uri(url); 
HttpClient client = new HttpClient(); 
await client.GetStringAsync(uri); 

第二个解决方案将允许你继续使用WebClient,因此如果您有许多其他代码取决于WebClient,它可能会作为临时修复程序。与WebClient使用async,安装Microsoft.Bcl.Async NuGet package,然后你可以使用DownloadStringTaskAsync

Uri uri = new Uri(url); 
WebClient client = new WebClient(); 
await client.DownloadStringTaskAsync(uri);