我正在处理串行端口上的数据流。波特率为 19200 kbps,留出一个拍摄时间(约 100 毫秒)来处理数据并将结果显示在屏幕上。
数据处理性能没有问题。主要问题是更新屏幕。应用程序规范需要我在表格视图中显示数据。此视图中的单元格上下文可能会根据它们指示的信息具有不同的颜色。例如红色表示错误,绿色或蓝色表示某些消息等。
目前,我正在使用 datagridview 来显示数据,因为它具有灵活的表格视图,并且它的单元格具有 ForeColor 属性来更改颜色。但是,与输入数据和处理速度相比,它太慢了。具体来说,当我在新数据到达时添加新行或从头开始删除旧行时。要添加和删除行,我使用 DGV.Rows.Add(...) 和 DGV.Rows.RemoveAt(...) 方法。
我考虑了两种方法:
1) 处理数据和更新 UI 的两个不同线程。但是,由于数据处理比对 datagridview 的操作要快得多,因此数据会累积并最终减慢一切。
2) 处理数据并按顺序更新画面。这种情况下,每条消息处理完后,都会在屏幕上显示该消息(会添加到datagridview中),等屏幕更新后处理下一条。显然,这种方式降低了处理速度,这是不可取的。
所以,我想知道是否有更好的方法来处理这种情况......或者我是否没有为此目的在性能方面使用正确的控制。
谢谢。