【发布时间】:2012-07-23 10:48:10
【问题描述】:
我正在寻找最快和最可靠的方法来同时使用 C# 下载 1000 个远程网页(使用 HttpWebRequest),将它们写入单个本地文件并在所有文件下载后运行一些处理代码,同时充分利用并行性和非阻塞并发可用。
服务器是一个四核 (vCPU) VPS,运行 Windows 2008 和 .NET 4.0(不能使用较新的 async/await 东西)。
你有什么建议?
更新:目前建议的选项有:反应式扩展 (Rx)、异步 CTP、TPL。
看起来 Async CTP 是理想的方法,其次是 Rx 和 TPL。伙计们怎么说?
【问题讨论】:
-
所有这些页面是来自一个网站还是来自 1000 个不同的网站?
-
@Ramhound 我不认为 WebClient 本身支持多线程。
-
@svick 所有页面来自不同的站点。
-
@Nick WebClient 有异步方法,不会占用额外的 ThreadPool 线程。
-
@Christoph / Ramhound 我想你们指的是 WebClient 异步方法,如下面的 James Cuthbert 示例所示stackoverflow.com/a/11611613/1157545
标签: c# multithreading concurrency parallel-processing task-parallel-library