Я имею дело с потоком данных на последовательном порту.Скорость передачи составляет 19200 кбит / с, оставляя время выстрела (около 100 мс) для обработки данных и отображения результатов на экране.
Нет проблем с производительностью обработки данных.Основная проблема - обновление экрана.Спецификация приложения требует, чтобы я отображал данные в табличном виде.Контексты ячеек в этом представлении могут иметь разные цвета в зависимости от информации, которую они указывают.Например, красный для ошибок, зеленый или синий для некоторых видов сообщений и т. Д.
В настоящее время я использую datagridview для отображения данных, поскольку он имеет гибкое табличное представление, а его ячейки имеют свойство ForeColor для изменения.цвет.Но это слишком медленно по сравнению с входными данными и скоростью обработки.В частности, когда я добавляю новые строки при поступлении новых данных или удаляю старые строки с самого начала.Чтобы добавить и удалить строку, я использую методы DGV.Rows.Add (...) и DGV.Rows.RemoveAt (...).
Я рассмотрел два подхода:
1) Два разных потока для обработки данных и обновления пользовательского интерфейса.Однако, поскольку обработка данных выполняется намного быстрее, чем операции с сеткой данных, данные будут накапливаться и, в конечном итоге, все замедлять.
2) Обработка данных и последовательное обновление экрана.В этом случае после обработки каждого сообщения сообщение будет отображаться на экране (будет добавлено в сетку просмотра данных), а следующее будет обработано после обновления экрана.Очевидно, что этот способ снижает скорость обработки, что нежелательно.
Итак, мне интересно, есть ли более эффективные способы справиться с этим условием ... или я не использую правильный контроль с точки зренияпроизводительность для этой цели.
Спасибо.