19得票1回答
Parallel.Foreach异常和取消

我试图了解Parallel.Foreach中异常和取消操作的处理方式。所有示例似乎都涉及到任务。 Parallel.Foreach中发生异常会怎样? 我是否需要在try/catch块中包含整个循环(使用AggregateException)? 在异常被捕获之前,循环中的所有其他任务,即使是未...

17得票1回答
Parallel.For(Foreach)会创建多少个线程?默认的最大并行度是多少?

我想知道当我运行Parallel.For/ForEach循环时会使用多少线程。 我发现可以通过MaxDegreeOfParallelism选项进行更改。 MSDN上的MaxDegreeOfParallelism帮助文档(链接)说: 默认情况下,对于For和ForEach,将利用底层...

16得票3回答
Parallel.ForEach不断创建新线程

在我的程序中使用 Parallel.ForEach 时,我发现有些线程似乎永远无法完成。事实上,它一直不断产生新的线程,这种行为是我所不期望的,也绝对不想要。 我能够使用以下代码重现这种行为,就像我的“真实”程序一样,它会大量使用处理器和内存(.NET 4.0 代码):public class...

15得票2回答
停止Parallel.ForEachAsync

我对C#中的停止Parallel.ForEachAsync循环感兴趣(考虑到Stop和Break之间的区别);对于Parallel.ForEach,我可以进行以下操作: Parallel.ForEach(items, (item, state) => { if (cancell...

14得票2回答
我可以在ConcurrentBag<Τ>上使用普通的foreach循环吗?

在我的代码的一个并行部分中,我将每个线程的结果保存到一个ConcurrentBag&lt;Τ&gt;中。然而,当这个过程完成后,我需要遍历这些结果,并将它们通过我的评估算法运行。普通的foreach循环是否能够遍历所有成员,还是需要特殊的代码?我也考虑过使用队列而不是背包,但我不知道哪个更好。...

14得票1回答
多线程和SqlFileStream。该进程无法访问指定的文件,因为它已在另一个事务中打开。

我正在提取SQL文件表中的文件内容。如果不使用Parallel,以下代码是有效的。 当同时读取SQL文件流(Parallel)时,我遇到了以下异常: “由于已在另一个事务中打开,因此无法访问指定的文件。” 简要概述: 从FileTable中读取文件(使用GET_FILESTREAM_T...

14得票3回答
Parallel.ForEach和await ForEachAsync之间的区别

在任何情况下选择 Parallel.ForEach 还是 await ForEachAsync,有什么理由吗?它们之间是否几乎相同? await collection.ForEachAsync( m =&gt; { m.DoSomething(); } ); VS Parallel.F...

13得票1回答
异步等待和并行

我对async/await如何并行工作有点困惑,所以我在这里写了一个测试代码。 我尝试发送了6个用列表模拟的任务。 每个任务都将执行3个其他子任务: 你可以复制/粘贴进行测试。 using System; using System.Collections.Generic; using Sy...

13得票2回答
Parallel.Foreach产生错误 "Index was outside the bounds of the array"

我在使用parallel.foreach时遇到了一个问题,即"索引超出了数组界限"。 我附上了一些关于parallel.foreach的代码以及它崩溃的位置。 var lstFRItems = session.CreateCriteria&lt;TFRItem&gt;().Add(Restri...

12得票2回答
使用Parallel.ForEach()时yield return的线程安全性

考虑以下代码示例,它创建一个可枚举的整数集合并在并行模式下处理:using System.Collections.Generic; using System.Threading.Tasks; public class Program { public static void Main...