在C#中我们有ParameterizedThreadStart
允许我们创建一个传递参数的线程,如下所示:
Thread thread = new Thread (new ParameterizedThreadStart(fetchURL));
thread.Start(url);
// ...
static void fetchURL(object url)
{
// ...
}
我尝试使用CreateAnonymousThread
在Delphi上重现,但它似乎不接受参数。
如何创建匿名线程并将参数传递给被调用的过程?
答案 0 :(得分:4)
TThread.CreateAnonymousThread将anonymous 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;