问题
我有源源不断的数据包。每次有新包传入(100 毫秒间隔)时,都会弹出一个事件,在该事件中我将包发送到一个类以处理数据并将其可视化。不幸的是,如果在处理当前包之前发送了一个新包,则可能会中止包的处理。
我现在拥有的
是用作另一个程序的 dll 的代码。当我开始编写 dll 代码时,我是 c# 的新手,所以我不想把它写得太复杂。一切正常,但如果 cpu 很忙,我会遇到一些丑陋的跳帧(在我的可视化部分)。
我有几个类,其中之一是处理所有包。这个类有大约 50 个属性、25 个函数和 1000 行代码。计算只需要 6 个函数。剩下的就是正确设置属性(如果用户更改设置)。
我需要改变什么
所以现在我想通过使用列表来缓冲所有传入的数据。该列表应由另一个线程处理。因此,将数据写入列表的时间不太可能超过 100 毫秒 ^^(2 个数组,每个数组有 40 个元素,每个元素应该等于无)
我的想法
将提到的类拆分为 2 个单独的类。一个处理包,一个处理设置。所以我会拆分用户和“程序”输入。创建一个使用“包处理”类来处理缓冲数据的线程。
我不知道什么
由于设置类包含处理类所需的重要属性,我不知道如何做到最好,因为处理类还需要更改/填充设置类中的缓冲区。但这将由主线程调用。或者最好不要拆分设置和处理类并保持原样?我对线程不是很熟悉,阅读了这本免费电子书Threading in C#的第一章