Questions tagged «parallel.foreach»

4
如何限制Parallel.ForEach?
我有一个Parallel.ForEach()异步循环,可以通过该循环下载一些网页。我的带宽有限,因此每次只能下载x页,但是Parallel.ForEach执行所需网页的整个列表。 在运行Parallel.ForEach时,是否可以限制线程数或任何其他限制器? 演示代码: Parallel.ForEach(listOfWebpages, webpage => { Download(webpage); }); 真正的任务与网页无关,因此创造性的网络爬网解决方案将无济于事。

9
在Parallel.ForEach中嵌套等待
在Metro应用程序中,我需要执行许多WCF调用。需要进行大量调用,因此我需要在并行循环中进行调用。问题在于并行循环在WCF调用全部完成之前退出。 您将如何重构它以使其按预期工作? var ids = new List<string>() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; var customers = new System.Collections.Concurrent.BlockingCollection<Customer>(); Parallel.ForEach(ids, async i => { ICustomerRepo repo = new CustomerRepo(); var cust = await repo.GetCustomer(i); customers.Add(cust); }); foreach ( var customer in customers ) { Console.WriteLine(customer.ID); …

5
如何将此foreach代码转换为Parallel.ForEach?
我有些困惑Parallel.ForEach。 是Parallel.ForEach什么,它的作用是什么? 请不要引用任何MSDN链接。 这是一个简单的例子: string[] lines = File.ReadAllLines(txtProxyListPath.Text); List<string> list_lines = new List<string>(lines); foreach (string line in list_lines) { //My Stuff } 如何用重写这个示例Parallel.ForEach?

4
Parallel.ForEach与Task.Run和Task.WhenAll
使用Parallel.ForEach或Task.Run()异步启动一组任务之间有什么区别? 版本1: List<string> strings = new List<string> { "s1", "s2", "s3" }; Parallel.ForEach(strings, s => { DoSomething(s); }); 版本2: List<string> strings = new List<string> { "s1", "s2", "s3" }; List<Task> Tasks = new List<Task>(); foreach (var s in strings) { Tasks.Add(Task.Run(() => DoSomething(s))); } await Task.WhenAll(Tasks);

3
Parallel.ForEach()与foreach(IEnumerable <T> .AsParallel())
抱歉,我正在尝试使用Reflector在BCL中找到这两种方法,但找不到它们。这两个摘要有什么区别? A: IEnumerable&lt;string&gt; items = ... Parallel.ForEach(items, item =&gt; { ... }); B: IEnumerable&lt;string&gt; items = ... foreach (var item in items.AsParallel()) { ... } 相互使用会产生不同的后果吗?(假设我在两个示例的方括号中所做的任何操作都是线程安全的。)

5
带有异步Lambda的并行foreach
我想并行处理一个集合,但是在实现它时遇到了麻烦,因此希望获得一些帮助。 如果要在并行循环的lambda中调用C#中标记为async的方法,则会出现问题。例如: var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, async item =&gt; { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } var count = bag.Count; 计数为0时会发生问题,因为创建的所有线程实际上都是后台线程,并且Parallel.ForEach调用不等待完成。如果删除async关键字,则该方法如下所示: var bag = new ConcurrentBag&lt;object&gt;(); Parallel.ForEach(myCollection, item =&gt; { // some pre stuff var responseTask = await GetData(item); …

5
打破parallel.foreach?
如何突破parallel.for循环? 我有一个非常复杂的语句,如下所示: Parallel.ForEach&lt;ColorIndexHolder&gt;(ColorIndex.AsEnumerable(), new Action&lt;ColorIndexHolder&gt;((ColorIndexHolder Element) =&gt; { if (Element.StartIndex &lt;= I &amp;&amp; Element.StartIndex + Element.Length &gt;= I) { Found = true; break; } })); 使用并行类,到目前为止,我可以优化此过程。然而; 我不知道如何打破并行循环?该break;语句引发以下语法错误: 没有封闭循环可以中断或继续
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.