Форум: "Начинающим";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];
ВнизЗапрос в потоке Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.058 c