Проблема производительности пользовательского набора данных - PullRequest
0 голосов
/ 05 октября 2010

Во время выполнения мое приложение получает данные с сервера MSSQL, и есть объект, который извлекает данные в мой пользовательский набор данных. Вот код:

public static void FillRegionData(int country, RegionDataTable DestinationTable)
{
  DestinationTable.Clear();
  using (selectRegionsListTableAdapter _taSource = new selectRegionsListTableAdapter())
  {
    BusStationDataSet.selectRegionsListDataTable _tblSource = _taSource.GetData(country, Settings.Default.DataLanguage);
    foreach (BusStationDataSet.selectRegionsListRow row in _tblSource.Rows)
    {
      DestinationTable.Rows.Add(new object[] { 
        row.region,
        row.country,
        row.title });
    }

  }
}

Все идет хорошо, пока не сработает foreach. Чуть более 100 строк приводит к зависанию всего приложения на несколько секунд.

Есть идеи, почему этот код такой медленный?

1 Ответ

1 голос
/ 05 октября 2010

Возможно ли DestinationTable привязано к данным в этой точке? Так как DataTable выдает уведомления об изменениях, добавление большого количества данных во время привязки вызовет узкое место в производительности. Во многих случаях вы можете просто приостановить привязку данных, пока вы делаете это. Или, альтернативно, заполните его сначала , а , а затем передайте его для привязки данных.

(разница здесь в том, перерисовывает ли и обновляет ли пользовательский интерфейс один раз для строки или один раз в целом )

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