日期:2014-05-17  浏览次数:21164 次

C#中出现“集合已修改;可能无法执行枚举操作”错误,怎么解决
这是一个串口通信并将数据在仪表上显示的程序(用的是串口控件),调试时,一开始程序正常运行,在接收的数据出现突然变化,改变LED仪表显示的小数位数时,出现此错误。还望有经验者不吝赐教!!该问题急需解决,急急急!!!若产生帮助,必加分!
串口通信 数据 c# 调试

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

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