4

我有一个程序需要从 Atom 提要中获取一些数据。我尝试了两种方法,但都没有奏效。

我已经使用 WebClient 同步下载了我需要的所有帖子,但是由于有几千个并且服务很慢,因此需要几个小时。

我已经(第一次)尝试了 async/await、新的 HttpClient 和 Task.WhenAll。不幸的是,这会导致成千上万的请求访问服务并将其关闭。

如何并行运行 100 个请求?

4

2 回答 2

2

您可以将 Parellel 与 ParallelOptions.MaxDegreeOfParallelism 一起使用

ParallelOptions.MaxDegreeOfParallelism 属性

或具有有限集合大小的 BlockingCollection

BlockingCollection 概述

我会推荐 BlockingCollection

于 2013-03-18T18:24:24.467 回答
1

听起来您已经有了一个解决方案,您可以一次完成很多工作。我建议只在上面添加另一层,它只是循环遍历所有帖子,但一次只处理 100 个。

现在你可能有: DownloadAll(List ListofPosts) 在 DownloadAll 里面你可能在最后等待。

代替: For 循环从 1 到 ( ListofPosts Count / 100) DownloadAll(ListofPosts.Skip(xxx).Take(100));

显然那里不是真正的代码,但是你可以做 100 个块,而对你的 main 函数几乎没有改变。

于 2013-03-18T17:44:28.713 回答