2

シリアルポートでデータのストリームを扱っています。ボーレートは 19200 kbps で、データを処理して結果を画面に表示するためのショット時間 (約 100 ミリ秒) を残します。

データ処理性能には問題ありません。主な問題は画面の更新です。アプリケーション仕様では、データを表形式で表示する必要があります。このビューのセル コンテキストは、それらが示す情報に基づいて異なる色になる場合があります。たとえば、エラーの場合は赤、ある種のメッセージの場合は緑または青などです。

現在、datagridview を使用してデータを表示しています。柔軟な表形式のビューがあり、そのセルには色を変更する ForeColor プロパティがあります。しかし、入力データと処理速度に比べて遅すぎます。具体的には、新しいデータの到着時に新しい行を追加するか、古い行を最初から削除する場合です。行を追加および削除するには、DGV.Rows.Add(...) および DGV.Rows.RemoveAt(...) メソッドを使用します。

私は2つのアプローチを検討しました:

1) データの処理と UI の更新のための 2 つの異なるスレッド。ただし、データ処理は datagridview での操作よりもはるかに高速であるため、データが蓄積され、最終的にすべてが遅くなります。

2) データを処理し、画面を順次更新します。この場合、各メッセージの処理後、メッセージが画面に表示され(datagridviewに追加され)、次は画面更新後に処理されます。明らかに、この方法は望ましくない処理速度を低下させます。

それで、この状態を処理するためのより良い方法があるかどうか、またはこの目的のためにパフォーマンスの観点から適切なコントロールを使用していないかどうか疑問に思っています。

ありがとう。

4

1 に答える 1