Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пграмма "замерзает" пока TThread не завершится [WinXP]


Страницы:   1 2

гия ©   (2011-12-28 12:44:00) 

Здравствуйте
Пишу пограмму в Дельфи ХЕ под Windows XP в которой приходится выполнять долгие селекты.
Чтобы программа не "замерзала" пока селект не выполнится написал обработчик

procedure Button1Click(Sender: TObject);
begin
 with Query do begin
   Close;
   SQL.Clear;
   SQL.Add('SELECT .....');
   
   TMyThread.Create(Query);
   Application.ProcessMessages;
 end;
end;

TMyThread описан следующим образом:

unit uMyThread;

interface

uses
 Classes {$IFDEF MSWINDOWS} , Windows {$ENDIF}, Ora, Unit1;

type
 TMyThread = class(TThread)
 private
   FQuery: TOraQuery;
 protected
   procedure Execute; override;
 public
   constructor Create(Query: TOraQuery);
 end;

implementation

{ TMyThread }

constructor TMyThread.Create(Query: TOraQuery);
begin
 inherited Create(False);
 FQuery := Query;
 Priority := tpNormal;
 FreeOnTerminate:= True;
//  Resume;
 Execute;
end;

procedure TMyThread.Execute;
begin
 NameThreadForDebugging('MyThread');
 { Place thread code here }
 FQuery.Open;
end;

end.

Однако программа все равно "замерзает" пока селект не выполнится.
Что надо сделать что бы селект реально выполнялся бы в "background"-е, а прграмма продолжала бы выполнять другие вещи


Медвежонок Пятачок   (2011-12-28 13:17:00) [21]

твой экзекут вызван из главного потока а значит и выполняется в нем.
а это значит что сам поток теперь нахрен не нужен.
его можно просто выкинуть, и просто вызывать FQuery.Open из главного


RWolf   (2011-12-28 13:11:00) [22]

надо правильно использовать класс TThread.
пример есть в Demos\Threads.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо