2013-06-25 55 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);