Parellel. Для не совсем работает, как я ожидал - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь объединить некоторые документы 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 годом. Иногда значение штрих-кода не совпадает с годом в документе.

Я довольно новичок в этом и, возможно, допускаю очевидную ошибку.У кого-нибудь что-нибудь выпрыгивает?

Спасибо

Карл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...