У меня есть следующая функция TPL
:
int arrayIndex = 0;
Dictionary < string, int > customModel = new Dictionary < string, int > ();
Task task = Task.Factory.StartNew(() =>
// process each employee holiday
Parallel.ForEach < EmployeeHolidaysModel > (holidays,
new ParallelOptions() {
MaxDegreeOfParallelism = System.Enviroment.ProcessorCount
},
item => {
customModel.Add(item.HolidayName, arrayIndex);
// increment the index
arrayIndex++;
})
);
//wait for all Tasks to finish
Task.WaitAll(task);
Проблема в том, что arrayIndex
не будет иметь уникальных значений из-за параллелизма.
Есть ли способ управлять переменной arrayIndex
, чтобы между параллельными задачами значение было уникальным?
По сути, в моем
customModel
я не могу иметь повторяющееся значениеarrayIndex
.
Цените любую помощь.