C#中出现“集合已修改;可能无法执行枚举操作”错误,怎么解决

时间:2022-02-10 17:12:15
这是一个串口通信并将数据在仪表上显示的程序(用的是串口控件),调试时,一开始程序正常运行,在接收的数据出现突然变化,改变LED仪表显示的小数位数时,出现此错误。还望有经验者不吝赐教!!该问题急需解决,急急急!!!若产生帮助,必加分!

4 个解决方案

#1


本帖最后由 caozhy 于 2013-09-29 21:13:08 编辑
不要在枚举集合的操作(例如foreach)中去执行修改集合的操作。如果需要修改集合,那么你应该先使用 ToArray() 方法,例如
foreach (var x in MyList.ToArray())
{
    这里执行可能修改MyList的操作
}

#2


您好,非常感谢您这么快给回复,先给您记5分,给您一个调试的细节:这是一个MDI程序,当把它改为单窗口的程序时,就不会出现该错误了,请问这可能是什么问题? 怎么解决呢?

#3


多线程操作同一数据会导致此问题,应加锁控制同一时间只有一个线程能够访问数据。

#4


你可能在foreach里面修改数据项了

#1


本帖最后由 caozhy 于 2013-09-29 21:13:08 编辑
不要在枚举集合的操作(例如foreach)中去执行修改集合的操作。如果需要修改集合,那么你应该先使用 ToArray() 方法,例如
foreach (var x in MyList.ToArray())
{
    这里执行可能修改MyList的操作
}

#2


您好,非常感谢您这么快给回复,先给您记5分,给您一个调试的细节:这是一个MDI程序,当把它改为单窗口的程序时,就不会出现该错误了,请问这可能是什么问题? 怎么解决呢?

#3


多线程操作同一数据会导致此问题,应加锁控制同一时间只有一个线程能够访问数据。

#4


你可能在foreach里面修改数据项了