我正在尝试将数据写入文件,并且数据每100毫秒不断更新一次。因此,当我单击“保存”按钮然后
System.InvalidOperationException:集合被修改后,枚举操作可能无法执行。
出现错误。根据我的搜索,如果有Foreach
循环,但没有Foreach
循环,则可以找到解决该问题的方法。
下面是我使用的代码
File.WriteAllLines(fileDialog.FileName,
RawDataFromSerialPort.Select((v, i) => $"{i + 1} Raw data is -->, {v.ToString()}"));
答案 0 :(得分:1)
我想说的是,当您尝试从原始数据集合中读取数据时,您的串行端口仍在后台线程上接收数据,建议您复制该集合的副本,然后将副本写到文件中
尝试在复制时在集合上使用syncroot属性。
https://docs.microsoft.com/en-us/dotnet/api/system.array.syncroot?view=netframework-4.7.2
答案 1 :(得分:1)
还要检查stacktrace,您会发现对调用堆栈的深入研究,最终使用了foreach-(如)循环。
单击“查看详细信息”链接,展开$ exception节点,然后查找StackTrace字段。
答案 2 :(得分:0)
问题是我正在访问的列表名称有误,因此更正列表名称RawDataFromSerialPort
可以解决我的问题