我有一个Parallel.ForEach()异步循环,可以通过该循环下载一些网页。我的带宽有限,因此每次只能下载x页,但是Parallel.ForEach执行所需网页的整个列表。
在运行Parallel.ForEach时,是否可以限制线程数或任何其他限制器?
演示代码:
Parallel.ForEach(listOfWebpages, webpage => {
Download(webpage);
});
真正的任务与网页无关,因此创造性的网络爬网解决方案将无济于事。
@jKlaus如果未修改列表(例如,它只是一组URL),我真的看不到问题吗?
—
2016年
@Shiv,如果有足够的时间,您将...计算执行次数并将其与列表的计数进行比较。
—
jKlaus
@jKlaus您在说什么会出错?
—
2016年
@jKlaus您正在修改一个非线程安全的元素(整数)。我希望它在那种情况下不起作用。另一方面,OP不会修改任何需要线程安全的内容。
—
Shiv
@jKlaus这是Parallel.ForEach的示例,可正确设置计数> dotnetfiddle.net/moqP2C。MSDN链接:msdn.microsoft.com/en-us/library/dd997393
—
v=vs.110).aspx