【发布时间】:2023-04-06 04:30:01
【问题描述】:
我有一个 Parallel.ForEach() 异步循环,我用它下载一些网页。我的带宽有限,因此我每次只能下载 x 页,但 Parallel.ForEach 会执行所需网页的整个列表。
有没有办法在运行 Parallel.ForEach 时限制线程数或任何其他限制器?
演示代码:
Parallel.ForEach(listOfWebpages, webpage => {
Download(webpage);
});
真正的任务与网页无关,因此创造性的网页抓取解决方案无济于事。
【问题讨论】:
-
@jKlaus 如果列表未修改,例如这只是一组网址,我真的看不出问题吗?
-
@Shiv,如果有足够的时间,您将... 计算您的执行次数并将其与列表的计数进行比较。
-
@jKlaus 你说什么会出错?
-
@jKlaus 您正在修改非线程安全元素(整数)。我希望它在那种情况下不起作用。另一方面,OP 不会修改任何需要线程安全的东西。
-
@jKlaus 这是一个正确设置计数的 Parallel.ForEach 示例 > dotnetfiddle.net/moqP2C。 MSDN 链接:msdn.microsoft.com/en-us/library/dd997393(v=vs.110).aspx
标签: c# .net asynchronous parallel.foreach