Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Увеличить скорость загрузки данных из Access, Увеличить скорост загрузки данных 
:(
    Опции темы
Alexb11
Дата 19.4.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



Подскажите, пожалуйста.
Есть ДБ Access. Необходимо загрузить в DataGridView данные из таблицы БД. Количество строк в таблице - 159463.
Проблема такова, что очень медленно загружается фориа.
Подскажите решение. Заранее спасибо.
PM MAIL   Вверх
XavierElf
Дата 2.5.2007, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Чтобы форма не подвисала во время заполнения гриды, можешь загрузку данных в гриду сделать в отдельном потоке, только не забудь обращаться к гриде через Invoke(...)
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
Alexb11
Дата 2.5.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



Можно по подробнее. Интересно то, что под Vist'ой загрузка данных выполняется значительно быстрее.
PM MAIL   Вверх
XavierElf
Дата 3.5.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Пример:
Имеем главную форму с гридой. Допустим она называется MyDataGridView.
Имеем кнопку, по нажатии на которую выгружаются данные из базы в гриду. Пусть она называется MyButton.
Тогда делаем следующее:

Код

//Обработчик нажатия на кнопку MyButton
Thread MyThread;
void MyButtonClick(object sender, EventArgs e)
{
    // Создаём новый поток, в котором будет запущен метод MyThreadProc
    Thread MyThread = new Thread(new ThreadStart(MyThreadProc);
    MyThread.Start();
}

//Метод, который будет запущен в потоке
void MyThreadProc()
{
    object [] row = new object[4];
    row[0] = "1";
    row[1] = "2";
    row[2] = "3";
    row[3] = "4";
    this.AddRow(row);
}

//
delegate void SetRowCallback(DataGridViewRow row);
void AddRow(object [] p)
{
    if (this.MyDataGridView.InvokeRequired)
    {
        SetRowCallBack d = new SetRowCallBack(AddRow);
        this.MyDataGridView.Invoke(d, new object [] { p });
    }
    else
        this.MyDataGridView.Rows.Add(p);
}

У меня работает нормально!  smile 
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
Alexb11
Дата 4.5.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



У меня выдает ошибку:
No overload for 'AddRow' matches delegate 'База1.Form1.SetRowCallback'
Почему?
PM MAIL   Вверх
XavierElf
Дата 4.5.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

Репутация: нет
Всего: 1



Покажи код формы в которой объявлял делегат.

Добавлено через 4 минуты и 14 секунд
Вот если что мои исходники, которые я сделал для проверки своего кода.  smile 

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  testthread.zip 18,21 Kb
--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
Alexb11
Дата 4.5.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



Огромное спасибо за пример. Буду разбираться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1326 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.