Я пытаюсь объединить некоторые документы PDF с помощью цикла Parallel.For, чтобы я мог создавать несколько документов одновременно.На 99 +% он работает нормально (и прекрасно работает, когда MaxDegreeOfParallelism = 1), но у меня возникает проблема, когда я объединяю несколько копий одного и того же PDF.transItem.DocumentList будет содержать все документы и их поля слияния, такие как:
DocID Field Value
1 LastName Smith
2 Year 2015
2 Year 2016
2 Year 2017
Ниже мой код
var options = new ParallelOptions { MaxDegreeOfParallelism = -1 };
Parallel.ForEach(transItem.DocumentList, options, (docItem) =>
{
//Get list of merge field for this document
List<Document> fieldList = documentList.Where(x => x.document_id == docItem.document_id).ToList();
//Get the extension (if any) and make it part of the bar code
int extension = 0;
if (GlobeTax.GlobeTax.IsNumeric(docItem.extension))
extension = int.Parse(docItem.extension);
docItem.bar_code = "01" + extension.ToString("00") + transItem.TransactionID.ToString("00000000") + docItem.document_id.ToString("0000");
//Iterate through the field list and assign the values
foreach (Document docFieldItem in fieldList)
{
//Assign the value from the cobject containing the merge data.
GetFieldValue(docFieldItem, boData, docItem.extension, emailInstructionsSB.ToString());
docFieldItem.bar_code = docItem.bar_code;
}
pdfList[docItem.array_pos] = docManagerAPI.ProcessPDF(fieldList);
});
В результате иногда я получаю два документа # 2 с2016 год, ни один с 2015 годом, а другой с 2017 годом. Иногда значение штрих-кода не совпадает с годом в документе.
Я довольно новичок в этом и, возможно, допускаю очевидную ошибку.У кого-нибудь что-нибудь выпрыгивает?
Спасибо
Карл