Delphi线程返回值

时间:2014-06-19 12:12:55

标签: multithreading delphi return-value

有人可以向我解释如何从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;

1 个答案:

答案 0 :(得分:8)

  1. 声明一个派生自TThread的类。
  2. 添加字段或多个字段以包含结果值。
  3. 在覆盖的Execute方法中设置结果值字段。
  4. 线程完成后,从线程实例中读取结果。
  5. 正如Remy所指出的,如果您只想返回一个Integer值,那么您可以使用ReturnValue的{​​{1}}属性。以与上述相同的方式使用它。请注意,TThread中的值是底层OS线程返回的值。

    您可以侦听ReturnValue以找出线程何时完成。或致电OnTerminate

    请注意,在开始运行后设置线程的参数。创建挂起的线程,或将参数传递给构造函数。此外,您应该使用WaitFor而不是Start。后者已被弃用。