Проблема с производительностью при отображении последних «n» элементов в Windows Forms ListBox (Visual Studio 2015) - PullRequest
0 голосов
/ 31 августа 2018

Я использую ListBox для отображения последних «n» элементов (скажем, 10000) для приложения в реальном времени. Я получаю около 10 строк данных в течение доли секунды из системы. Как только строка ListBox достигает «n» (скажем, 10000), я вручную удаляю первые 10 элементов (используя цикл «В то время») и добавляю вновь полученные 10 элементов (используя цикл «В то время»). Поскольку трафик ввода данных больше, пользовательский интерфейс зависает при выполнении операции удаления / добавления. Приложение работает нормально, если мы прокомментируем операцию удаления. Означает, что если мы выполняем только операцию добавления, приложение работает нормально для более чем 1 строки недостатка.

Пожалуйста, поделитесь предложением:

  1. Как мы можем отображать только последние "n" элементов в пользовательском интерфейсе?

  2. Доступен любой другой параметр, кроме ListBox?

  3. Доступен ли какой-либо запрос LINQ для удаления первых нескольких элементов (скажем, 10) из списка, чтобы операция удаления была быстрее.

Среда разработки:

Приложение Windows Forms с Visual Studio 2015

Заранее спасибо.

С уважением,

Hari.

1 Ответ

0 голосов
/ 31 августа 2018

10000 элементов в чем-либо немного расточительны, есть средства управления, которые используют виртуализацию. Т.е. они поддерживают только то, что нужно показать

Однако, возможно, вы захотите взглянуть на метод ListBox.BeginUpdate , он может помочь при удалении

Поддерживает производительность, пока элементы добавляются в ListBox по одному время, предотвращая рисование элемента управления до EndUpdate () метод называется.

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