Stringbuilder用于Parallel.Foreach循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Stringbuilder用于Parallel.Foreach循环相关的知识,希望对你有一定的参考价值。

在我的代码中,有一个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,然后在循环结束时加入它们以创建一个有序的字符串?

答案

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

以上是关于Stringbuilder用于Parallel.Foreach循环的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.StringBuilder和java.lang.StringBuffer

StringBuilder与StringBuffer

C#使用ObjectPool提高StringBuilder性能

使用 DLL 将 C# StringBuilder / 字符串传递给 C++ char*

java中StringStringBuffer和StringBuilder的区别(简单介绍)

String StringBuilder StringBuffer 区别