Подвисание окна приложения

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
dima51
Сообщения: 2
Зарегистрирован: 16 мар 2005, 01:13
Контактная информация:

Добрый день!

Пожалуйста, помогите разобраться!

При плотной работе с базой данных (через BDE), когда переключаюсь на другое окно в системе, то не могу вернуться назад в свою программу (подвисает окно, не прорисовывается) до тех пор пока она не заверхит все свои задачи...

Как быть? пробывал делать (не помогает):

Код: Выделить всё

procedure TFDataTransfer.FormActivate(Sender: TObject);
begin
Invalidate;
Application.ProcessMessages;
end;
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

лучше Application.ProcessMessages вставить в код который всё тормозит. Естественно не в самый внутренний цикл ;)
Изображение
dima51
Сообщения: 2
Зарегистрирован: 16 мар 2005, 01:13
Контактная информация:

спасибо за ответ!

у меня так сейчас и сделано, но думал что можно как-то одним махом все решить, а то циклов много...
вообщем решил на изменение прогресс бара поставить Application.ProcessMessages
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Есть еще один инструмент - Thread (нити). Т.е. многопоточные приложения.

Запросы к БД выполнять в отдельной нити.

Решение конечно нетривиальное, но в ряде случаев оно того стоит.

Например приложение само по себе работает, а внизу в статусной стороке ProgressBar (как в Worde, напрмиер, при печати)
Ответить