Главная страница
    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.5 MB
Время: 0.046 c
1-1098981275
Misterio
2004-10-28 20:34
2004.11.14
Передвинуть кнопку


14-1098987902
blackvirus
2004-10-28 22:25
2004.11.14
декомпиляторы


3-1097736858
alsov1
2004-10-14 10:54
2004.11.14
Как в timestamp записать милисекунды?


3-1097640948
diabolik_krsk
2004-10-13 08:15
2004.11.14
Создание ADOConnection во время прогона программы


3-1098085500
Ega23
2004-10-18 11:45
2004.11.14
В чём может быть дело???





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский