Parallel.Foreach循环中使用的Stringbuilder

时间:2019-03-18 05:34:20

标签: .net-4.0 thread-safety task-parallel-library .net-4.5 parallel.foreach

在我的代码中,存在一个foreach循环,该循环遍历集合中的所有项目,并在StringBuilder内附加文本以创建“ .ics”文件。为了加快速度,我将foreach循环转换为Parallel.Foreach循环。尽管性能有所提高,但“ .ics”文件中的文本无序,从而导致文件损坏。

“。ics”文件中预期文本的示例=>

Begin:calendar
Begin:event1
.
.
End:event1
Begin:event2
.
.
End:event2
End:Calendar

使用parallel.foreach循环=>

创建的“ .ics”文件示例
Begin:calendar
Begin:event1
Begin:event2
.
.
.
.
End:Event1
End:Event2

是否可以为集合中的每个项目创建唯一的StringBuilder,然后在循环结束时将它们加入以创建有序字符串?

1 个答案:

答案 0 :(得分:0)

我在“ Parallel.Foreach”循环内添加了一个新的StringBuilder变量,并且在循环结束时,新的StringBuilder变量的内容附加了主要的Stringbuilder变量。 通过在循环内创建一个新的Stringbuilder变量,它充当并行运行的每个线程的私有对象。