Parallel中因为listStatic再改变,导致countList也改变,如果遍历countlist那么就会报错。
static void Main(string[] args)
{
Parallel.For(0, 20, (i) =>
{
List<int> countList = null;
outList(out countList);
listStatic.Add(5);
//此处遍历有可能会报 集合已修改,无法遍历。
foreach (var item in countList)
{
Console.WriteLine(item);
}
});
Console.Read();
}
static List<int> listStatic = new List<int>();
static void outList(out List<int> listOut)
{
listOut = listStatic;
listStatic.Add(1);
listStatic.Add(2);
listStatic.Add(3);
listStatic.Add(4);
listStatic.Add(4);
}