我有这个示例代码。并行处理密集IO功能
List<Dictionary<string,string>> objects = new List<Dictionary<string,string>>();
foreach (string url in urls)
{
objects.add(processUrl(url))
}
我需要处理的URL,processUrl
下加载页面和运行许多正则表达式来提取一些信息,并返回一个“C#JSON像”对象,所以我想在平行,并在结束时运行这个我需要一个对象的列表,所以我需要等待所有的任务来继续过程,我该如何做到这一点?我举了很多例子,但都没有挽回回报。
问候
我没有在Parallel.ForEach的主体中使用锁,而是使用具有localInit和localFinally的重载,并在localFinally中汇总所有结果。这样你就不会锁定每个操作,每个线程只有一次。在localInit中放置一个空列表,添加到本地而不锁定在主体中,并最终收集。 – vcsjones 2011-06-12 02:22:52
这些选项都没有提供限制同时执行任务总数的方法。 – 2011-06-12 05:41:12
@Rick Sladkey - 不知道我理解你的评论。所有3个选项都有一种方法来限制同时执行的任务的数量,我没有在代码中显示它,因为这没有被问到。 – 2011-06-12 05:53:56