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

Вниз

Как правильно синхронизировать thread?   Найти похожие ветки 

 
dracula ©   (2007-04-12 14:52) [0]

Проблема вот в чём, создаю thread там идёт создание базы файлов, затем вызываю из этогоже threada процедуру в ней происходит определённые вычисления, и вот из неё то и надо выполнить процедуру с синхронизацией которая обращается к VCL (причём она находится в другом юните).

unit1
...

 TFooThread = class(TThread)
 private
 protected
   procedure Execute; override;
 end;
 var execute   : TFooThread;

...

procedure TFooThread.Execute;
begin
...
 FindD(name: string);
end;

procedure FindD(name: string);
begin
 ...
 Synchronize(Add(name)); Вот это вот и надо синхронизировать.
end;

unit2...

procedure Add(name: string);
begin
....
end;


 
Сергей М. ©   (2007-04-12 15:03) [1]

TFooThread = class(TThread)
private
  AName: String;
  procedure SyncAdd;
protected
  procedure FindD(name: string);
  procedure Execute; override;
end;

procedure TFooThread.Execute;
begin
...
FindD(name);
end;

procedure TFooThread.SyncAdd;
begin
 Add(AName);
end;

procedure TFooThread.FindD(name: string);
begin
...
AName := Name;
Synchronize(SyncAdd);
end;


 
dracula ©   (2007-04-12 15:58) [2]

>>> to Сергей М.

Спасибо огромное, очень помог, всё заработало!



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

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

Наверх




Память: 0.47 MB
Время: 0.056 c
4-1164992757
BKV
2006-12-01 20:05
2007.04.29
Как определить настоящие пути смапированного диска?


2-1176032757
delphi_
2007-04-08 15:45
2007.04.29
туплю с INI


2-1176329072
SerJaNT
2007-04-12 02:04
2007.04.29
Удалить дубликаты в ListBox


2-1176365667
dzhagr
2007-04-12 12:14
2007.04.29
TDBGrid


2-1176199231
semv
2007-04-10 14:00
2007.04.29
Какой компонентой высветить список файлов