所以我的并行foreach有时会卡住,在调试时我会尝试打破所有我看到的位置,并且它总是在并行foreach的开头。 它不是每次都这样做,但是当它做到这一点时,它就过了一段时间。
你们可以帮我解决一下吗?我真的不明白为什么它可能是因为每个线程都在访问checkedPogos列表
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;
}
编辑:我已将List更改为并发集合,但仍无法解决问题。