在C#中流式传输数据和更新屏幕

时间:2011-08-31 20:57:28

标签: c# datagridview data-stream

我正在处理串口数据流。波特率为19200 kbps,剩余一个镜头时间(约100 ms)来处理数据并在屏幕上显示结果。

数据处理性能没有问题。主要问题是更新屏幕。应用程序规范需要我以表格视图显示数据。此视图中的单元格上下文可能根据它们指示的信息而具有不同的颜色。例如,红色表示错误,绿色或蓝色表示某些类型的消息等。

目前,我使用datagridview来显示数据,因为它具有灵活的表格视图,并且其单元格具有ForeColor属性来更改颜色。但是,与输入数据和处理速度相比,它太慢了。具体来说,当我在新数据到达时添加新行或从头开始删除旧行。要添加和删除行,我使用DGV.Rows.Add(...)和DGV.Rows.RemoveAt(...)方法。

我考虑了两种方法:

1)两个不同的线程,用于处理数据和更新UI。但是,由于数据处理比datagridview上的操作快得多,因此数据将被累积并最终减慢所有内容。

2)处理数据并按顺序更新屏幕。在这种情况下,在处理完每条消息后,消息将显示在屏幕上(将被添加到datagridview),然后在屏幕更新后处理下一条消息。显然,这种方式会降低处理速度,这是不可取的。

所以,我想知道是否有更好的方法来处理这种情况......或者如果我没有在性能方面使用正确的控制。

感谢。

1 个答案:

答案 0 :(得分:0)

1有一些聪明的编程,不会让griview落后。我在这里运行一个网格,显示实时财务更新,我不会落后,并且网格获得的数据比你的19200波特连接更多 - 我每秒最多可达到10.000个数据项。我只是放弃那些没有明显兴趣的人。优化网格表示。获得一个替代网格(用于处理大量更新)。