Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.252.100] |
|
Сообщ.
#1
,
|
|
|
Попытку подключения к постгресу осуществляю, в основной форме программы, следующим образом, как показано ниже.
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) Либо заставить не зависать программу Спасибо |
Сообщ.
#2
,
|
|
|
Все правильно. Обработчик в главной форме вошел в iFMBZ_ZConnection.Connect и там застрял. Вспомогательный поток шлет сообщения, но толку от них, если главный поток по-прежнему внутри iFMBZ_ZConnection.Connect.
Т.ч. либо 1) Connect в отдельном потоке 2) Форма-ждун на Winapi, см. тут. |