Как построить эффективный список KPI для WinForms - PullRequest
0 голосов
/ 30 октября 2009

Мне нужно создать элемент управления Windows, который отображает индикаторы KPI. Нечто похожее на изображение, показанное на следующем рисунке.

альтернативный текст http://www.novolocus.com/wp-content/uploads/2008/03/normal.JPG

Существуют также следующие требования:

  1. Список необходимо обновлять из фонового потока каждые ~ 15 секунд
  2. Требуется обработать более 100 индикаторов

Моя первоначальная идея состояла в том, чтобы использовать FlowLayoutPanel с комбинацией метки и картинки (для каждой строки). Мне удалось создать точно такую ​​же вещь, но по мере того, как список растет и обновляется, пользовательский интерфейс перестает отвечать на запросы и увеличивается объем используемой памяти.

Я попробовал тот же подход с GridView и некоторыми сторонними компонентами, но каждый раз, когда результат был похожим, пользовательский интерфейс в конечном итоге полностью зависал, потому что он не мог справиться с таким количеством обновлений элементов.

Итак, как бы вы подошли к этой проблеме, что бы вы сделали, создав этот элемент управления, какие объекты вы бы выбрали для создания пользовательского интерфейса и как бы вы обновили его. (Если есть сторонний элемент управления, который выглядит хорошо, он также может работать для меня).

1 Ответ

3 голосов
/ 30 октября 2009

Такая компоновка не должна приводить к увеличению объема памяти или замедлению.

Ваше описание больше похоже на утечку ресурсов в вашем элементе управления (не удаление графических объектов). Убедитесь, что вы знаете, что интерфейс IDisposable подразумевает необходимость using(){} для объектов Brush, Graphics и Image.

Короткий образец:

using (Graphics g = Graphics.FromImage(picture))
using (Brush fill = new SolidBrush(Color.Yellow))
{
    g.FillRectangle(fill, x0, y0, x1, y1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...