Ограничение на длину List внутри Parallel.For
Мне нужно выполнить итерацию от 1 до 1млн. Сгруппировать их до 1000 и отправить в метод. Чтобы повысить производительность, я использую Parallerl.for. Суть вопроса заключается в том, что бывают случаи, когда условие _user Ids.Count==1000 не выполняется, потому что его длина уже больше 1000. Вот код:
var _usrsIds = new ConcurrentBag<long>();
Console.WriteLine($"{DateTime.Now.ToLocalTime()}:Start");
Parallel.For(1, 1000000000, usrId =>
{
if (_usrsIds.Count == 1000)
AddUsersToDB(_usrsIds);
else
{
lock (this)
{
_usrsIds.Add(usrId);
}
}
});
Console.WriteLine($"{DateTime.Now.ToLocalTime()}:End");
Источник: Stack Overflow на русском