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

Вниз

Запрос в потоке   Найти похожие ветки 

 
q1485   (2008-02-29 13:31) [0]

Прочитал статьи на сайте. Не получается выполнить запрос в параллельном потоке чтоб форма не залипала. Можете помочь примером..


 
Palladin ©   (2008-02-29 13:33) [1]

как неполучается то? в смысле ручки код набивать нехотят?


 
Сергей М. ©   (2008-02-29 13:49) [2]


> q1485   (29.02.08 13:31)


Корень зла, скорей всего, в Synchronize(DoWork)

)


 
ANB   (2008-02-29 13:50) [3]


> Не получается выполнить запрос в параллельном потоке

Не надо выполнять запрос в параллельном потоке. Пользуйся асинхронным режимом, только посмотри в справке, как правильно ожидать окончания выполнения.


 
q1485   (2008-02-29 13:50) [4]

Так и знал.. )

unit Unit2;

interface

uses
 Classes;

type
 TQQQ = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
 public
   procedure Exec;
 end;

implementation

uses Unit1;

{ TQQQ }

procedure TQQQ.Exec;
begin
 try
   Form1.OQuery1.Tag:=0;
   Form1.OQuery1.Open;
   Form1.OQuery1.Tag:=1;
 except Form1.OQuery1.Tag:=666; end;
 Terminate;
end;

procedure TQQQ.Execute;
begin
 { Place thread code here }
 Synchronize(Exec);
end;

end.

============================================
 QQQ:=TQQQ.Create(True);
........
   OQuery1.Tag:=0;
   if QQQ.Suspended then QQQ.Resume;
   while OQuery1.Tag=0 do begin
     Application.ProcessMessages;
   end;
   if OQuery1.Tag<>1 then RaiseException(0,0,0,0);
........
 QQQ.Free;


 
Palladin ©   (2008-02-29 13:51) [5]


> Сергей М. ©   (29.02.08 13:49) [2]

как говорится великий Synchronize и Сергей М. пророк его :)))


 
q1485   (2008-02-29 13:51) [6]

>> Сергей М. ©   (29.02.08 13:49) [2]
Я так и подумал...

>> ANB   (29.02.08 13:50) [3]
Я не читал, но извратился-я.. )


 
Сергей М. ©   (2008-02-29 13:52) [7]

Он, запрос этот, у тебя в основном потоке выполняется, а не в дополнительном.
Как же при этом форме не "залипать" ?


 
Сергей М. ©   (2008-02-29 13:55) [8]


> Так и знал


Раз знал, зачем тогда делал ?)


 
q1485   (2008-02-29 13:55) [9]

Всмысе что...
Кваери надо создавать и выпонять в дополнительном?
И не понял...


 
q1485   (2008-02-29 13:56) [10]


> Раз знал, зачем тогда делал ?)


Что вычитал, то сделал........ я пока другого не знаю.


 
Сергей М. ©   (2008-02-29 13:57) [11]


> Кваери надо создавать и выпонять в дополнительном?


Разумеется !
Иначе весь смысл тобой задуманного теряется ..


 
q1485   (2008-02-29 14:00) [12]


> Иначе весь смысл тобой задуманного теряется ..


М... а как же совместные ресурсы...
Меня это убедило что все будет нормально...

В-третьих, из этих процессов можно легко получить доступ ко всем глобальным данным программы, т.к. класс процесса является, по сути, просто частью программы - обычным юнитом (unit).


 
Сергей М. ©   (2008-02-29 14:00) [13]

Мало того, потребуется еще и Database с Session (если они у тебя явно используются) в том же доп.потоке создавать/активировать. Речь-то, вероятно, идет о BDE ?


 
q1485   (2008-02-29 14:02) [14]

Не, Oracle... Session только.....


 
Сергей М. ©   (2008-02-29 14:03) [15]


> а как же совместные ресурсы


А что с ними не так ?


> В-третьих, из этих процессов


Ты где это вычитал ? Там же где и пример взял ?

Не кури эту траву)


 
Сергей М. ©   (2008-02-29 14:04) [16]


> q1485   (29.02.08 14:02) [14]


Про Оракл не знаю. Но, подозреваю, что это и Оракла касается.


 
q1485   (2008-02-29 14:04) [17]


> А что с ними не так ?


Я думал кваери - совместный ресерс. Создал там, юзаю в другом месте..

http://www.delphimaster.ru/articles/thread/index.html

:)


 
Сергей М. ©   (2008-02-29 14:08) [18]


> http://www.delphimaster.ru/articles/thread/index.html


Притча во языцех)


> думал кваери - совместный ресерс


Но это же вовсе не означает, что его никак нельзя защитить, кроме как только с использованием Synchronize()


 
Palladin ©   (2008-02-29 14:09) [19]


> http://www.delphimaster.ru/articles/thread/index.html

как Максим допустил эту статью на сайт, до сих пор загадка...

вот что читать нужно
http://www.delphimaster.ru/articles/panov/


 
Сергей М. ©   (2008-02-29 14:10) [20]


> Palladin ©   (29.02.08 14:09) [19]


Она уже тут корни пустила как у тысячелетнего баобаба)


 
ANB   (2008-02-29 16:16) [21]


> q1485   (29.02.08 13:50) [4]

И одак и доа прекрасно работают асинхронно в основном потоке.
А вот при использовании в потоках могут выкинуть проблему. Как минимум сессию в потоке точно заводить еще одну придется. И снять запрос при этом все равно корректно не сможешь.



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

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

Наверх




Память: 0.51 MB
Время: 0.034 c
2-1204280417
alexsashkan
2008-02-29 13:20
2008.03.30
Проблемка с отображаением данных!!!


15-1202661027
ketmar
2008-02-10 19:30
2008.03.30
kpmc git repository


8-1178098969
Veter
2007-05-02 13:42
2008.03.30
DirectX


15-1203313694
Vladix
2008-02-18 08:48
2008.03.30
Визуализация секций uses


15-1202656809
DVM
2008-02-10 18:20
2008.03.30
Поясните насчет клиентских лицензий Windows Server