Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.035 c
4-1096915697
Klopan
2004-10-04 22:48
2004.11.14
Обновить часть экрана.


1-1098940211
Font
2004-10-28 09:10
2004.11.14
Unicode и VCL


14-1099037093
syte_ser78
2004-10-29 12:04
2004.11.14
К. Кастанеда


8-1092306263
Александр_________
2004-08-12 14:24
2004.11.14
Захват и сжатие видео и аудио потоков в режиме реального времени


14-1098686675
syte_ser78
2004-10-25 10:44
2004.11.14
Как сделать чтобы DmClient 2.1.2 запомнил имя и емейл в форме ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский