簡體   English   中英

C#中的流數據和更新屏幕

[英]Streaming data and updating screen in C#

我正在處理串行端口上的數據流。 波特率為19200 kbps,留下了處理時間(約100毫秒)來處理數據並在屏幕上顯示結果。

數據處理性能沒有問題。 主要問題是更新屏幕。 應用程序規范需要我以表格視圖顯示數據。 根據其指示的信息,此視圖中的單元格上下文可能具有不同的顏色。 例如,紅色表示錯誤,綠色或藍色表示某些消息等。

當前,我正在使用datagridview來顯示數據,因為它具有靈活的表格視圖,並且其單元格具有ForeColor屬性以更改顏色。 但是,與輸入數據和處理速率相比,它太慢了。 具體來說,當我在新數據到達時添加新行或從開頭刪除舊行時。 要添加和刪除行,請使用DGV.Rows.Add(...)和DGV.Rows.RemoveAt(...)方法。

我考慮了兩種方法:

1)兩個不同的線程,用於處理數據和更新UI。 但是,由於數據處理比對datagridview的操作要快得多,因此數據將被累積並最終減慢一切。

2)處理數據並順序更新屏幕。 在這種情況下,在處理完每條消息之后,該消息將顯示在屏幕上(將被添加到datagridview中),並且在屏幕更新后將處理下一條消息。 顯然,這種方式降低了處理速度,這是不希望的。

因此,我想知道是否有更好的方法來處理這種情況……或者我是否為此目的在性能方面沒有使用正確的控件。

謝謝。

1帶有一些不會使griview落后的智能編程。 我在這里顯示實時財務更新的網格上運行,但我沒有落后,並且該網格比您的19200波特連接所保存的數據更多-我幾乎每秒最多可獲取10.000個數據項。 我只是丟棄那些沒有明顯興趣的東西。 優化網格顯示。 獲取一個備用網格(用於處理大量更新)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM