2

这是我用来将 URL 下载为 html 的代码。问题是,有什么办法可以异步进行吗?问题我想知道响应是否成功以及程序继续之前响应中的内容。如果您可以等待 client.DownloadStringAsync 并且 task.delay 不会总是有效,那将是完美的,除了我不喜欢设置标准等待时间的想法。谢谢!

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

1 回答 1

4

有两种解决方案。

第一个(我推荐)是使用Microsoft.Net.Http NuGet 包并更改您的代码以使用新的HttpClient而不是旧的WebClient

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

第二种解决方案将允许您继续使用WebClient,因此如果您有很多其他代码依赖于WebClient. 要使用asyncWebClient请安装Microsoft.Bcl.Async NuGet 包,然后您可以使用DownloadStringTaskAsync

Uri uri = new Uri(url);
WebClient client = new WebClient();
await client.DownloadStringTaskAsync(uri);
于 2013-06-25T16:56:04.427 回答