C# 将数据保存到txt文件时发生异常

C# 将数据保存到txt文件时发生异常,c#,wpf,exception,file-writing,C#,Wpf,Exception,File Writing,我试图将数据写入一个文件,数据每100毫秒不断更新一次。所以当我点击save按钮时 System.InvalidOperationException:集合已修改枚举操作可能无法执行。 出现了错误。在我搜索时,如果存在Foreach循环,则有此问题的解决方案,但在我的情况下,没有Foreach循环 下面是我使用的代码 File.WriteAllLines(fileDialog.FileName, RawDataFromSerialPort.Select((v, i) => $&qu

我试图将数据写入一个文件,数据每100毫秒不断更新一次。所以当我点击save按钮时

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

出现了错误。在我搜索时,如果存在
Foreach
循环,则有此问题的解决方案,但在我的情况下,没有
Foreach
循环

下面是我使用的代码

File.WriteAllLines(fileDialog.FileName, 
    RawDataFromSerialPort.Select((v, i) => $"{i + 1} Raw data is -->, {v.ToString()}"));

我想说,当您尝试读取原始数据集合时,您的串行端口仍在后台线程上接收数据,我建议您制作集合的副本,然后将副本写入文件

在进行复制时,请尝试对集合使用syncroot属性


我想说,当您尝试读取原始数据集合时,您的串行端口仍在后台线程上接收数据,我建议您制作集合的副本,然后将副本写入文件

在进行复制时,请尝试对集合使用syncroot属性


同时检查stacktrace,在那里您将找到调用堆栈的深入分析,最终使用了foreach-(like)循环


单击“查看详细信息”链接,展开$exception节点并查找StackTrace字段

同时检查stacktrace,在那里您将找到调用堆栈的深入分析,其中最终使用了foreach-(like)循环


单击“查看详细信息”链接,展开$exception节点并查找StackTrace字段

问题是我访问的列表名错误,因此更正列表名
RawDataFromSerialPort
解决了我的问题

问题是我访问的列表名错误,因此更正列表名
RawDataFromSerialPort
解决了我的问题

您能建议一些复制将整个集合写入文件之前?我的意思是,就像你建议的那样,我必须先复制并保存收集的数据,只需单击SaveRawData@PhilHI've updated按钮,因为我不熟悉你的程序,所以我不能说在复制时锁定收集是否可以接受!在将整个收藏写入文件之前,你能提出一些复制方法吗?我的意思是,就像你建议的那样,我必须先复制并保存收集的数据,只需单击SaveRawData@PhilHI've updated按钮,因为我不熟悉你的程序,所以我不能说在复制时锁定收集是否可以接受!什么类型是
RawDataFromSerialPort
,您如何访问它?您需要同步对它的访问。什么类型是
RawDataFromSerialPort
,您如何访问它?您需要同步对它的访问。