Потоковая передача данных и обновление экрана в C # - PullRequest
2 голосов
/ 01 сентября 2011

Я имею дело с потоком данных на последовательном порту.Скорость передачи составляет 19200 кбит / с, оставляя время выстрела (около 100 мс) для обработки данных и отображения результатов на экране.

Нет проблем с производительностью обработки данных.Основная проблема - обновление экрана.Спецификация приложения требует, чтобы я отображал данные в табличном виде.Контексты ячеек в этом представлении могут иметь разные цвета в зависимости от информации, которую они указывают.Например, красный для ошибок, зеленый или синий для некоторых видов сообщений и т. Д.

В настоящее время я использую datagridview для отображения данных, поскольку он имеет гибкое табличное представление, а его ячейки имеют свойство ForeColor для изменения.цвет.Но это слишком медленно по сравнению с входными данными и скоростью обработки.В частности, когда я добавляю новые строки при поступлении новых данных или удаляю старые строки с самого начала.Чтобы добавить и удалить строку, я использую методы DGV.Rows.Add (...) и DGV.Rows.RemoveAt (...).

Я рассмотрел два подхода:

1) Два разных потока для обработки данных и обновления пользовательского интерфейса.Однако, поскольку обработка данных выполняется намного быстрее, чем операции с сеткой данных, данные будут накапливаться и, в конечном итоге, все замедлять.

2) Обработка данных и последовательное обновление экрана.В этом случае после обработки каждого сообщения сообщение будет отображаться на экране (будет добавлено в сетку просмотра данных), а следующее будет обработано после обновления экрана.Очевидно, что этот способ снижает скорость обработки, что нежелательно.

Итак, мне интересно, есть ли более эффективные способы справиться с этим условием ... или я не использую правильный контроль с точки зренияпроизводительность для этой цели.

Спасибо.

1 Ответ

0 голосов
/ 01 сентября 2011

1 с некоторым умным программированием, которое не заставляет griview отставать. Здесь я использую сетку, которая показывает финансовые обновления в реальном времени, и я не отстаю, и эта сетка получает больше данных, чем поддерживает ваше соединение со скоростью 19200 бод - я почти получаю до 10.000 элементов данных в секунду. Я просто отбрасываю те, которые не представляют видимого интереса. Оптимизировать сетку презентации. Получить альтернативную сетку (которая предназначена для обработки множества обновлений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...