Ниже приведен фрагмент кода в моей производственной среде для способа, в котором я использовал Parallel.ForEach и параллельный мешокОдновременный доступ к переменным, несмотря на использование ConcurrentBag
Parallel.ForEach(lstTasks, options, item =>
{
Repository.AssignmentDTO.TaskAssignmentDTO tskVar;
while (lstConcurrentObj.TryTake(out tskVar))
{
finaltaskslist.Add(ProcessTaskAssgn(item, tskVar));
}
//}
});
finaltaskslist список, где я добавлять объекты после выполнения несколько длительных операций в методе ProcessTaskAssgn ....
lstConcurrentObj выше - это параллельный пакет, в который я добавил несколько инициализированных объектов с одинаковыми значениями.
Этот список затем используется для заполнения данных.
Однако, когда я смотрю записи в datatable, ясно, что записи были повторены или смешаны, вывод о том, что мой метод ProcessTaskAssgn не был действительно поточным, а параллельные операции дали неверные результаты. Правильно ли я использую параллельный пакет?