Параллельный 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;
}

РЕДАКТИРОВАТЬ: я изменил список для одновременной коллекции, и это все еще не решило проблему.

0 ответов

Другие вопросы по тегам