我正在尝试使用Parallel.For循环合并一些PDF文档,以便可以一次创建多个文档。 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。条形码有时与文档中的年份不匹配。
我对此很陌生,因此可能犯了一个明显的错误。有什么东西撞向任何人吗?
谢谢
卡尔