Stringbuilder, используемый в цикле Parallel.Foreach - PullRequest
0 голосов
/ 18 марта 2019

В моем коде есть цикл foreach, который перебирает все элементы в коллекции и добавляет текст внутри StringBuilder для создания файла .ics.Чтобы сделать это быстрее, я преобразовал цикл foreach в цикл Parallel.Foreach.Хотя производительность была улучшена, текст в файле ".ics" был неупорядоченным, что привело к повреждению файла.

Пример ожидаемого текста в файле ".ics" =>

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

Примерфайла ".ics", созданного с помощью цикла parallel.foreach =>

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

Есть ли способ создать уникальный StringBuilder для каждого элемента в коллекции и затем присоединить их в конце цикла ксоздать упорядоченную строку?

1 Ответ

0 голосов
/ 18 марта 2019

Я добавил новую переменную StringBuilder внутри цикла "Parallel.Foreach", и в конце цикла содержимое новой переменной StringBuilder добавляется к основной переменной Stringbuilder. Создав новую переменную Stringbuilder внутри цикла, она действует как закрытый объект для каждого параллельного потока.

...