Форум: "Базы";
Текущий архив: 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.033 c