例如我有这个代码:
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var lst =new List<int>();
for (int i = 0; i < 2000000; i++)
{
lst.Add(i);
}
new Thread(() =>
{
for (int i = 20000001; i < 21000000; i++)
{
lst.Add(i);
}
}).Start();
new Thread(() =>
{
lst.Where(item =>
item > 85200 && item < (50000 * (item + 154896556) * 2 / 1000)
).ToList();
}).Start();
new Thread(() =>
{
for (int i = 21000001; i < 22000000; i++)
{
lst.Add(i);
}
}).Start();
}
}
}
我得到了这个异常(附加信息:集合已修改;枚举操作可能无法执行。)因为我在一个线程中发生了变化并在另一个线程中迭代。这是我的问题:如何通过 System.Collections.Immutable.ImmutableList<> 而不是 List<> 重写此代码?