DataTable + DataGrid Производительность привязки данных против настраиваемого объекта источника данных + сетки данных - PullRequest
0 голосов
/ 10 октября 2008

В нашем приложении для промышленной автоматизации нам необходимо захватывать и отображать данные в миллисекундах.

У нас есть привязка данных между элементом управления сеткой данных и объектом DataTable. У нас есть около трехсот записей, которые необходимо отобразить в сетке. Поэтому мы обновляем 300 записей каждый раз, когда получаем записи.

Пример

       TabularViewTable tvt = _presenter.WorkItem.Items.Get<TabularViewTable> ("TabularViewTable");

        foreach (DataRow row in tvt.Rows)
        {
            row["Value"] = GetDataFast(row["Name"]);                
        }

После подключения 10 устройств загрузка процессора увеличивается на 15%. Как повысить производительность с помощью DataTable или с помощью какого-либо пользовательского источника данных

С уважением,

Krishgy

Ответы [ 2 ]

2 голосов
/ 10 октября 2008

Вы должны серьезно пересмотреть свой пользовательский интерфейс:

  • Действительно ли необходимо отображать 300 значений? Обычный человек не может сосредоточиться на более чем 7 вещах одновременно,
  • Даже если вы уменьшите число параметров, частота обновления будет, по-видимому, высокой.

Вы, вероятно, должны сделать следующее:

  • создать панель с графическим представлением наиболее важных данных (графики, датчики, ...)
  • создание развернутых форм и отчетов, чтобы пользователь мог видеть, что произошло с системой в любой заданный период
0 голосов
/ 13 мая 2009

Для начала вам нужно переключиться с DataTable на DataReader, так как он намного быстрее. Во-вторых, я бы посмотрел на архитектуру Lazy Loading. Привязать 50 записей и, когда они прокрутятся до нижнего, Привязать / загрузить еще 50.

...