Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

Подключение к БД в потоке   Найти похожие ветки 

 
AlexG ©   (2004-10-13 10:44) [0]

Мне нужно поместить проверку подключения в поток. Я делаю так:

procedure TSearchServer.Execute;
begin
 Synchronize(OnExecute); //<--здесь вызывается CheckConnection
 Suspend;
 Terminate;
end;

procedure TfrmLogin.CheckConnection;
begin
 DoConnectToServer;
end;

procedure TfrmLogin.btnCheckConnectionClick(Sender: TObject);
begin
  if <условие> then
  begin
     FCheckConnection := TSearchServer.Create(TRUE);
     FCheckConnection.Priority := tpLowest;
     FCheckConnection.FreeOnTerminate := TRUE;
     FCheckConnection.OnExecute := CheckConnection;
     FCheckConnection.Suspended := FALSE;
  end
  else begin
     FCheckConnection.Suspended := TRUE;
     FCheckConnection.Terminate;
  end;
end;

Но при этом у меня с программой не получается работать. А я хочу, чтобы во время проверки соединения можно было работать с программой. Как мне правильно организовать работу потока?


 
Reindeer Moss Eater ©   (2004-10-13 10:47) [1]

Еще один образец бессмысленного вторичного потока.


 
AlexG ©   (2004-10-13 10:52) [2]

Почему бессмысленного? Как сделал бы ты?


 
Reindeer Moss Eater ©   (2004-10-13 10:53) [3]

Он бессмысленный потому, что весь код его выполняется в главном потоке.


 
AlexG ©   (2004-10-13 10:58) [4]

Значит, DoConnectToServer нужно перенести в поток. Т.е. полностью перенести все поля, к которым происходит обращение и т.д. и т.п. Так? Тогда будет нормально работать и будет он не бессмысленным? Я правильно понял тебя?


 
Reindeer Moss Eater ©   (2004-10-13 11:22) [5]

Можно вынести километры кода в доп. поток.
А потом тупо "обернуть" весь Execute в Syncronize. После чего весь километр кода будет выполнятся в первичном потоке.


 
AlexG ©   (2004-10-13 11:45) [6]

Значит все дело в Syncronize. Если я хочу, чтобы эти километры коды выполнялись параллельно, мне не нужно испоьзовать Syncronize. Так? Но при этом у меня не должно быть конфликтов, поэтому все работаюobt элементы нужно вынести в сам поток... Так?


 
KSergey ©   (2004-10-13 13:03) [7]

> [6] AlexG ©   (13.10.04 11:45)
> Так?

и не только.
Обеспечить безконфликтный доступ к общим данным, например.
А еще можно книжку почитать ;)

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


 
AlexG ©   (2004-10-13 13:13) [8]

Я уже через асинхронный механизм работы с БД пошел. Думаю, так равильнее всего.


 
KSergey ©   (2004-10-13 13:28) [9]

> [8] AlexG ©   (13.10.04 13:13)
> Я уже через асинхронный механизм работы с БД пошел. Думаю,
> так равильнее всего.

Я не понял что правильее: пройти или не нам и остановить свой выбор? ;)


 
AlexG ©   (2004-10-13 13:59) [10]

//KSergey
Э-э-э.... Что ты сказал? :)


 
KSergey ©   (2004-10-13 14:33) [11]

> [10] AlexG ©   (13.10.04 13:59)
> //KSergey
> Э-э-э.... Что ты сказал? :)

Я не понял что сказано в [8] ;)


 
AlexG ©   (2004-10-13 15:05) [12]

В общем, я хочу сделать следующее: http://delphimaster.net/view/3-1097655754/



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.049 c
9-1090532158
Sergeef
2004-07-23 01:35
2004.11.14
Доки по созданию игр на С++


14-1098792989
yet another student
2004-10-26 16:16
2004.11.14
Виртульные машины Бека/Кнута


14-1098870383
Tor
2004-10-27 13:46
2004.11.14
Установка Apollo SQL 6.0


1-1099239142
Piero
2004-10-31 19:12
2004.11.14
Проблемма с собственным классом


14-1098383173
SviL
2004-10-21 22:26
2004.11.14
Хочу найти компоненты