带参数

时间:2016-01-20 01:55:33

标签: delphi

在C#中我们有ParameterizedThreadStart允许我们创建一个传递参数的线程,如下所示:

Thread thread = new Thread (new ParameterizedThreadStart(fetchURL));
thread.Start(url);

// ...
static void fetchURL(object url)
{
    // ...
}

我尝试使用CreateAnonymousThread在Delphi上重现,但它似乎不接受参数。

如何创建匿名线程并将参数传递给被调用的过程?

1 个答案:

答案 0 :(得分:4)

TThread.CreateAnonymousThreadanonymous method作为参数,因此您可以将传入任何值的方法组合在一起。捕获这些值,因此在传递参数时需要小心。阅读"变量绑定机制"有关变量捕获的更多信息,请参阅上面匿名方法链接中的部分。

例如:

procedure DoSomething(const aWebAddress: String);
begin
end;

procedure BuildThread;
var
  myThread: TThread;
  fetchURL: string;
begin
  fetchURL := 'http://stackoverflow.com';
  // Create an anonymous thread that calls a method and passes in
  // the fetchURL to that method.
  myThread := TThread.CreateAnonymousThread(
    procedure
    begin
      DoSomething(fetchURL);
    end);
  ...
end;