Страница 1 из 1

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

Добавлено: 16 мар 2005, 01:19
dima51
Добрый день!

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

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

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

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

procedure TFDataTransfer.FormActivate(Sender: TObject);
begin
Invalidate;
Application.ProcessMessages;
end;

Добавлено: 16 мар 2005, 11:08
Игорь Акопян
лучше Application.ProcessMessages вставить в код который всё тормозит. Естественно не в самый внутренний цикл ;)

Добавлено: 16 мар 2005, 12:35
dima51
спасибо за ответ!

у меня так сейчас и сделано, но думал что можно как-то одним махом все решить, а то циклов много...
вообщем решил на изменение прогресс бара поставить Application.ProcessMessages

Добавлено: 17 мар 2005, 01:54
Naeel Maqsudov
Есть еще один инструмент - Thread (нити). Т.е. многопоточные приложения.

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

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

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