Как передать при создании нити (Tthread) ей некоторое значение

Советы » Компьютер » Как передать при создании нити (Tthread) ей некоторое значение

Как передать при создании нити (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 © 2022 - All Rights Reserved - www.delphirus.com