如何在多线程中调用递归函数

时间:2012-12-28 16:56:39

标签: multithreading delphi synchronization delphi-xe3

我编写了一个函数来递归搜索与表单上的对象关联的文件,我在一个单独的线程中运行此函数,因此UI线程不是问题。

如何使用Synchronize,我调用具有参数的函数?

递归函数是否调用了Synchronize命令,我有合理的正确性?

同步模式是否具有相同的返回所有呼叫?

2 个答案:

答案 0 :(得分:6)

您可以使用匿名方法拨打电话:

procedure TMyThread.Execute;
var
  MyParameter: Integer;
begin
  MyParameter := 42;
  Synchronize(
    procedure
    begin
      MethodWithParameter(MyParameter);
    end
    );
end;

答案 1 :(得分:2)

您可以执行以下操作:

...
FMyValue := Xyz;
Synchronize(MyProc);
...

Procedure TMyThread.MyProc;
begin
  VclProc(FMyValue)
end;