У меня есть множество procedures
, которые нужно вызвать из thread
, то есть в другом Unit
.Вызванный procedure
зависит от того, где был создан thread
.Можно ли передать ссылку на процедуру с параметрами в thread
, сделать там что-нибудь, записать result
в parameter
из procedure
и назвать это procedure
?Как я мог это сделать?Вот часть моего кода:
procedure TForm1.One(mString: string; mInteger: Integer);
begin
//do some stuff...
Memo1.Lines.Add(mString);
end;
procedure TForm1.Two(mString: string; mDouble1, mDouble2: Double);
begin
//do some stuff...
Memo2.Lines.Add(mString);
end;
procedure TForm1.Three(mString: string; color: TColor; mInteger: Integer);
begin
//do some stuff....
RichEdit1.SelAttributes.Color := color;
RichEdit1.Text := mString;
end;
Код Thread Unit
:
type
myThread = class(TThread)
protected
procedure Execute; override;
private
procedure Sinchro;
public
constructor Create (some parameters); reintroduce; //reference to procedure need to be added here?
destructor Destroy; override;
end;
procedure myThread.Execute;
begin
try
//do some stuff...
except
on E: Exception do
begin
//handle exception
end;
end;
try
//do some stuff
finally
Synchronize(Sinchro);
end;
end;
constructor myThread.Create(some parameters);
begin
inherited Create(True);
//handle parameters
//handle reference to my procedure?
end;
procedure myThread.Sinchro;
begin
//call to my procedure
end;