Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的数据流和屏幕更新_C#_Datagridview_Data Stream - Fatal编程技术网

C# C语言中的数据流和屏幕更新

C# C语言中的数据流和屏幕更新,c#,datagridview,data-stream,C#,Datagridview,Data Stream,我正在处理串行端口上的数据流。波特率为19200 kbps,留出约100 ms的放炮时间来处理数据并在屏幕上显示结果 数据处理性能没有问题。主要问题是更新屏幕。应用程序规范需要我在表格视图中显示数据。此视图中的单元格上下文可能根据所指示的信息具有不同的颜色。例如,红色表示错误,绿色或蓝色表示某些类型的消息等 目前,我使用datagridview来显示数据,因为它有一个灵活的表格视图,其单元格具有ForeColor属性来更改颜色。但是,与输入数据和处理速度相比,它太慢了。具体来说,当我在新数据到达

我正在处理串行端口上的数据流。波特率为19200 kbps,留出约100 ms的放炮时间来处理数据并在屏幕上显示结果

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

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

我考虑了两种方法:

1两个不同的线程用于处理数据和更新UI。然而,由于数据处理比datagridview上的操作快得多,数据将被累积,最终会减慢一切

2处理数据并按顺序更新屏幕。在这种情况下,在处理每条消息后,屏幕上显示的消息将添加到datagridview,下一条消息将在屏幕更新后处理。显然,这种方法降低了处理速度,这在实际中是不理想的

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



谢谢。

1带有一些不会让griview落后的智能编程。我在一个显示实时财务更新的网格中运行,我不会落后,该网格获得的数据比19200波特的连接保持的数据还要多——我几乎每秒获得10.000个数据项。我只是丢弃那些看不见的兴趣。优化网格表示。获取一个可处理大量更新的可变网格。

1使用一些不会使griview落后的智能编程。我在一个显示实时财务更新的网格中运行,我不会落后,该网格获得的数据比19200波特的连接保持的数据还要多——我几乎每秒获得10.000个数据项。我只是丢弃那些看不见的兴趣。优化网格表示。获取用于处理大量更新的可变网格。

如何向网格中添加数据项?您是将其绑定到数据源,还是使用Add方法?基本上,就性能而言,使用添加或删除方法以高数据速率处理数据是一个好主意吗?我不这么认为。我会更新它们。网格上的项目是固定的,即很少更改。单元格的内容会发生变化。另外,我不使用标准网格-Infrastics one针对这种行为进行了更多优化。我的问题是添加新行,删除旧行。例如,我必须显示最后1000行最新的行,而视图应该看起来像一个数据流。嗯,这也没问题。行是否使用图形卡级别的缓冲区?这个暗示对我来说很重要。进入模板。你能解释一下吗。我不确定我是否完全理解了您。如何将数据项添加到网格中?您是将其绑定到数据源,还是使用Add方法?基本上,就性能而言,使用添加或删除方法以高数据速率处理数据是一个好主意吗?我不这么认为。我会更新它们。网格上的项目是固定的,即很少更改。单元格的内容会发生变化。另外,我不使用标准网格-Infrastics one针对这种行为进行了更多优化。我的问题是添加新行,删除旧行。例如,我必须显示最后1000行最新的行,而视图应该看起来像一个数据流。嗯,这也没问题。行是否使用图形卡级别的缓冲区?这个暗示对我来说很重要。进入模板。你能解释一下吗。我不确定我是否完全理解了你。把它记下来——每秒有多少行,用户愿意阅读多少行?GUI应该是用户-在线的。比如说大约20行/秒,用户也应该能够看到所有的行/秒。但是没有人能读20行/秒。你是对的。但是,他/她可以在传入数据中向下或向上滚动。因此,数据应该准备好滚动,并且数据应该静止不动。我认为这需要一个历史数据的虚拟化视图。向下看——每秒有多少行进入,用户愿意阅读多少行?GUI应该是用户-在线的。比如说大约20行/秒,用户也应该能够看到所有的行/秒。但是没有人能读20行/秒。你是对的。但是,他/她可以在传入数据中向下或向上滚动。因此,数据应该是b
e准备好滚动了。数据应该静止不动。我认为这需要历史数据的虚拟化视图。