Я все еще сталкиваюсь с C Sharp и .NET и работаю над приложением для отображения данных, постоянно читаемых с USB-устройства. У меня работает весь USB-код, и он получает обновления данных каждые 5 мс. Данные состоят из набора значений датчиков для нескольких единиц, скажем, 50 единиц с 12 датчиками на единицу.
В настоящее время я использую объект ListBox для отображения 50 строк данных. Я устанавливаю режим списка в OwnerDrawFixed, а мой источник данных - в массив данных, представляющий данные, считываемые с устройства USB (один объект на строку в ListBox), и использую событие DrawItem для графического рисования каждой строки. списка в соответствии с запросом списка (я делаю это таким образом, чтобы включить цвет текста, форматирование, аккуратный макет и т. д.).
Чтобы ListBox обновлял отображаемые данные, я периодически звоню Invalidate, чтобы принудительно перерисовать его, но это ужасно медленно и недопустимо мерцает даже при низких частотах, таких как обновления за 1 секунду, не говоря уже о том, чтобы куда-нибудь попасть около 5 мс обновления датчиков.
Может ли кто-нибудь предложить лучший подход к обновлению данных на экране, возможно, такой, где я не все рисую каждый раз, или, возможно, способ сказать ListBox перерисовывать только одну строку, возможно, если данные в этой строке изменились?
В любом случае я не привязан к ListBox, это просто мое незнакомство с платформой .Net - возможно, лучшим решением может быть рендеринг всего в растровое изображение и затем перетаскивание его на экран одним действием.
Я уже читал похожий вопрос, но предложения там не очень помогли ...
c # - быстрое обновление данных ListBox
Любые альтернативные предложения от опытных разработчиков .net с благодарностью ...