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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процесс подключения к постгресу, прогрес бар не работает 
:(
    Опции темы
maxfox111
Дата 19.6.2018, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попытку подключения к постгресу осуществляю, в основной форме программы, следующим образом, как показано ниже. 

Код

FMBZ_MyThread := TFMBZ_ProgressBarThread.Create(False);
FMBZ_MyThread.Priority:= tpNormal;
sleep(50);

try
iFMBZ_ZConnection.Connect;
except
ShowMessage('Please clarify: is the server running on host ' + iFMBZ_ZConnection.HostName + '?');
end;


где iFMBZ_ZConnection это переменная TZConnection;

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

Код

FMBZ_MyThread := TFMBZ_ProgressBarThread.Create(False);
FMBZ_MyThread.Priority:= tpNormal;


процедуры изменения прогресбара ниже
Код

procedure TFMBZ_ProgressBarThread.Execute;
while not(FMBZ_MyThread.Terminated) do
begin
sleep(50);
PostMessage(FMBZ_MainAdminForm.Handle,PROGRESS_POS,0,1);
end;
end;
procedure TFMBZ_MainAdminForm.SetProgressPos(var Msg: TMessage);
begin
FMBZ_ProgressBar.Position:=FMBZ_ProgressBar.Position + Msg.LParam;
if (FMBZ_ProgressBar.Position >= FMBZ_ProgressBar.Max) then
FMBZ_ProgressBar.Position := 0;
FMBZ_ProgressBar.Refresh;
end;


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

Может ли кто нибудь подсказать как 
1) Либо заставить прогресбар изменяться в процессе подключения к постгресу
2) Либо заставить не зависать программу

Спасибо


PM MAIL   Вверх
Snowy
Дата 19.6.2018, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Подвисает не прогрессбар, а основной поток приложения, в котором ты и коннектишься к базе.
Пока он висит, никакие контролы на форме обновляться не смогут, что бы там не происходило в других потоках - основной поток просто не отзывается на призывы обновления формы.
Чтобы он не зависал, придётся connection вынести в отдельный тред. 
Но тогда потеряешь возможность пользоваться DB контролами и придётся работать с базой вручную...
Так что вывод простой - если у connection нет асинхронного варианта, то никак.

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


 




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


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

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