System.InvalidOperationException:“集合已修改;可能无法执行枚举操作。”

img


img

图片错误怎么改正?

请不要直接对集合中的数据进行不稳定的修改。

img


这段报错很有可能是你在for循环时,对集合中的元素进行了删除或者添加。
导致集合临时缩小或者放大。产生的异常。请检查源码中是否还有其他地方篡改了数据。

正在遍历的集合是不允许改变长度的,否则就会抛出异常
这通常是因为
1.多线程,线程不安全,其他线程修改了list
2.自己在遍历过程中执行了添加、删除的操作
解决方法
1.多线程需要加锁,以保证同一时刻只能有一个线程访问对象,语法:lock(object){},此处object是你自定义变量,要保证多线程中使用同一个变量,所以最好是静态的,或者string类型这种全局唯一的变量
2.如果需要动态的改变list长度,那么你需要经历2次遍历,第一次遍历先记录下要修改的行号,再执行一次循环来实际添加或删除。删除要用for循环不要foreach,要从后往前循环,以避免index改变。