Производительность при установке большого источника данных DataGridView - PullRequest
0 голосов
/ 31 октября 2011

У меня довольно большой набор данных (1000 строк), который я хочу передать в DataGridView в моем приложении Windows Forms (.NET 3.5). Запрос данных из базы данных и создание DataTable выполняется очень быстро, но когда я устанавливаю свойство DataSource для DataGridView, буквально требуется около минуты, прежде чем приложение станет отзывчивым.

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

Просто чтобы уточнить, код, который имеет ужасную производительность, просто так:

dgv1.DataSource = dt;

Где 'dt' - это созданная мной таблица данных

1 Ответ

1 голос
/ 31 октября 2011

Я не знаю, как это повлияет на ваше приложение.

Но в зависимости от того, какое событие инициирует заполнение DataGridView, я бы использовал BackgroundWorker, который работал бы достаточно забавно в фоновом режиме, освобождая приложение, чтобы оно не выглядело безразличным.А также фоновый работник может отчитываться перед основным потоком, который его вызвал, что позволяет вам реализовать некоторую программу обновления / индикатора выполнения.

Исходя из собственного опыта, получение данных из источника данных и связывание с ним всегда будут занимать некоторое время.время делать

protected BackgroundWorker _bw;
_bw = new BackgroundWorker;
_bw.DoWork += DoWorkMethod;

public void DoWorkMethod(object sender, DoWorkEventArgs e)
{
//Do work here.
}

В этом вся суть.Вы можете использовать методы Completed и UpdateProgress, чтобы помочь с отображением индикатора выполнения и т. Д. *

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