|
|
|
|
Как
передать при создании нити (Tthread) ей некоторое значение?
К
примеру, функция "прослушивает" каталог на предмет файлов. Если находит, то
создает нить, которая будет обрабатывать файл. Потомку надо передать имя
файла, а вот как?
Странный вопрос. Я бы понял, если бы требовалось
передавать данные во время работы нити. А так обычно поступают следующим
образом. В объект нити, происходящий от TThread дописывают поля. Как
правило, в секцию PRIVATE. Затем переопределяют конструктор CREATE, который,
принимая необходимые параметры заполняет соответствующие поля. А уже в
методе EXECUTE легко можно пользоваться данными, переданными ей при его
создании. Например:
...... TYourThread = class(TTHread) private FFileName: String; protected procedure Execute; overrided; public constructor Create(CreateSuspennded: Boolean; const AFileName: String); end; ..... constructor TYourThread.Create(CreateSuspennded: Boolean; const AFileName: String); begin inherited Create(CreateSuspennded); FFIleName := AFileName; end;
procedure TYourThread.Execute; begin try .... if FFileName = ... .... except .... end; end; .... TYourForm = class(TForm) .... private YourThread: TYourThread; procedure LaunchYourThread(const AFileName: String); procedure YourTreadTerminate(Sender: TObject); .... end; .... procedure TYourForm.LaunchYourThread( const AFileName: String); begin YourThread := TYourThread.Create(True, AFileName); YourThread.Onterminate := YourTreadTerminate; YourThread.Resume end; .... procedure TYourForm.YourTreadTerminate(Sender: TObject); begin .... end; .... end.
|
Copyright ©
"Мастера DELPHI" E-mail:
delphi@mastak.com
http://www.delphimaster.ru |
Источник получения информации: http://www.delphimaster.ru
|
|