|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#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; Но в процессе подключения программа "немножко" зависает и для того что бы показать что идет подключение и нужно подождать, ввел прогресбар который запускаю в потоке создаваемом до подключения к постгресу. Код:
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
|
||||
|
||||
Перед Sleep() попробуйте вставить Application.ProcessMessages;
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
А что,так поток нужен?,обычный таймер чем провинился
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
||||
|
||||
Цитата:
Бред... По вопросу: Если ты подключаешься к БД и обновляешь прогресс из одного потока - то у тебя естественно поток тормозится на время работы Connect и прогресс обновляться не будет. Можно пойти дальше: сделать отдельный поток для отображения прогресса (вообще полный бред ) Самое простое сделать так: 1. Отобразил главную форму. 2. Отобразил окошечко (TForm) с надписью "Подождите коннектимся к БД" и переделал курсор на "часики". 3. Запустил коннект. 4. Переделал курсор обратно на "стрелочку" 5. По результатам скрыл окно с надписью или выдал в него сообщение об ошибке. 6 profit Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |