c#中的流数据和更新屏幕
本文关键字:更新 屏幕 数据 | 更新日期: 2023-09-27 18:07:07
我正在处理串行端口上的数据流。波特率为19200kbps,留出一段时间(约100ms)处理数据并将结果显示在屏幕上。
数据处理性能没有问题。主要问题是更新屏幕。应用程序规范需要我在表格视图中显示数据。此视图中的单元格上下文可能根据它们所指示的信息具有不同的颜色。例如,红色表示错误,绿色或蓝色表示某些类型的消息等等。
目前,我正在使用一个datagridview来显示数据,因为它有一个灵活的表格视图,它的单元格有ForeColor属性来改变颜色。但是,与输入数据和处理速度相比,它太慢了。特别是,当我在新数据到达时添加新行或从一开始删除旧行时。要添加和删除一行,我使用DGV.Rows.Add(…)和DGV.Rows.RemoveAt(…)方法。
我考虑了两个方法:
1)两个不同的线程用于处理数据和更新UI。然而,由于数据处理比datagridview上的操作要快得多,数据将会累积,最终减慢一切。
2)处理数据,依次更新画面。在这种情况下,在处理完每条消息后,消息将显示在屏幕上(将添加到datagridview中),下一条消息将在屏幕更新后处理。显然,这种方式降低了处理速度,这是不可取的。
所以,我想知道是否有更好的方法来处理这种情况…或者我没有使用正确的控件来实现此目的。
谢谢。
1与一些聪明的编程不会使griview落后。我在这里运行一个网格,显示实时的财务更新,我不会落后,这个网格获得的数据比你的19200波特率的连接所能容纳的数据还要多——我几乎每秒获得10,000个数据项。我只是丢弃了那些没有明显兴趣的。优化网格表示。获取一个替代网格(用于处理大量更新)