![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно синхронизировать thread?
dracula © (2007-04-12 14:52:00)Проблема вот в чём, создаю 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;
dracula (2007-04-12 15:58:00) [1]>>> to Сергей М.
Спасибо огромное, очень помог, всё заработало!
Сергей М. (2007-04-12 15:03:00) [2]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;