Параллельный Foreach иногда застревает / зависает
Так что мой параллельный foreach иногда застревает, и при отладке я пытаюсь сломать все, чтобы увидеть, где я нахожусь, и он всегда находится в начале параллельного foreach. Он не делает это каждый раз, но когда это делает, это происходит через некоторое время.
Можете ли вы, ребята, помочь мне разобраться? Я не очень понимаю, почему помимо того, что это может быть, потому что все потоки получают доступ к списку CheckPogos
public static Task<List<string>> Checks(List<string> pogos)
{
arret = false;
var pogoTask= new Task<List<string>>(() =>
{
List<string> checkedPogos= new List<string>();
Parallel.ForEach(pogos, (string pogo, ParallelLoopState state) =>
{
if (arret)
state.Stop();
pogo= pogo.Trim();
if (pogo != null && Check(pogo))
{
checkedPogos.Add(pogo);
}
});
return checkedPogos.Distinct().ToList();
});
pogoTask.Start();
return pogoTask;
}
РЕДАКТИРОВАТЬ: я изменил список для одновременной коллекции, и это все еще не решило проблему.