gpt4 book ai didi

multithreading - Delphi线程返回值

转载 作者:行者123 更新时间:2023-12-03 18:13:51 33 4
gpt4 key购买 nike

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

最佳答案

  • 声明一个派生自 TThread 的类.
  • 添加一个或多个字段以包含结果值。
  • 在覆盖的 Execute 中设置结果值字段方法。
  • 线程完成后,从线程实例中读取结果。

  • 正如 Remy 指出的那样,如果您只想返回一个 Integer值,那么您可以使用 ReturnValue TThread 的属性(property).以与上述相同的方式使用它。请注意,放置在 ReturnValue 中的值是底层操作系统线程返回的值。

    您可以收听 OnTerminate找出线程何时完成。或调用 WaitFor .

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

    关于multithreading - Delphi线程返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24306342/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com