Stringbuilder用于Parallel.Foreach循环

问题描述 投票:0回答:1

在我的代码中,有一个foreach循环,它遍历集合中的所有项目,并在StringBuilder中附加文本以创建“.ics”文件。为了加快速度,我将foreach循环转换为Parallel.Foreach循环。虽然性能得到了改善,但“.ics”文件中的文本是无序的,这会创建一个损坏的文件。

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

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

使用parallel.foreach loop =>创建的“.ics”文件示例

Begin:calendar
Begin:event1
Begin:event2
.
.
.
.
End:Event1
End:Event2

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

.net-4.0 thread-safety task-parallel-library .net-4.5 parallel.foreach
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.