【发布时间】:2017-09-10 06:08:47
【问题描述】:
我继承了一个 C# 项目,但对于如何解决问题感到非常困惑。
基本上我有一个类会产生一个新的通信线程。该通信线程接收数据并简单地将这些数据作为自定义类添加到 ObservableCollection。
主类还启动了另一个新线程,它处理 ObservableCollection,它基本上是 linq 查询的负载,并且根据所需的组合等触发代码中的不同内容。它是一个连续的 while 循环,在完成所有检查后会短暂休眠
现在它完全可行,这个处理可能比下一条消息需要更长的时间,因此为什么它不会发生在收到的消息触发器中。
它执行的第一个 linq 之一是 Collection.where(....).OrderByDescending(....).ToList();
这经常给我错误“集合已修改;枚举操作可能无法执行”错误。 这是有道理的,我正在阅读,而通讯线程正在写入它。
对我来说解决这个问题的最佳架构是什么?
【问题讨论】:
标签: c#