有人可以向我解释如何从myThread调用函数测试中获取返回值吗?
function test(value: Integer): Integer;
begin
Result := value+2;
end;
procedure myThread.Execute;
begin
inherited;
test(Self.fParameters);
end;
procedure getvaluefromthread();
var
Capture : myThread;
begin
list := TStringList.Create;
Capture := myThread.Create(False);
Capture.fParameters := 2;
Capture.Resume;
end;
答案 0 :(得分:8)
TThread
的类。 Execute
方法中设置结果值字段。 正如Remy所指出的,如果您只想返回一个Integer
值,那么您可以使用ReturnValue
的{{1}}属性。以与上述相同的方式使用它。请注意,TThread
中的值是底层OS线程返回的值。
您可以侦听ReturnValue
以找出线程何时完成。或致电OnTerminate
。
请注意,在开始运行后设置线程的参数。创建挂起的线程,或将参数传递给构造函数。此外,您应该使用WaitFor
而不是Start
。后者已被弃用。