嗨,我是delphi的新手。如何同时使用这两个功能? function a(...):integer; function b(...):integer;
因为b等到a finshed。
答案 0 :(得分:7)
假设Delphi 2009或更高版本并使用OmniThreadLibrary:
uses OtlParallel;
var
aRes: integer;
bRes: integer;
begin
Parallel.Join(
procedure begin
aRes := a();
end,
procedure begin
bRes := b();
end);
end.
对于不喜欢匿名函数的纯粹主义者:
uses OtlParallel;
var
aRes: integer;
bRes: integer;
procedure CalcA;
begin
aRes := a();
end;
procedure CalcB;
begin
bRes := b();
end;
begin
Parallel.Join(CalcA, CalcB);
end.
(如果CalcA和CalcB是方法,它的工作方式相同,而不是普通的程序。)
正如其他人所说,多线程编程领域充满了危险。确保您的两个函数不是修改相同的结构,不是将数据输出到同一目的地,最重要的是,他们没有以任何方式使用GUI。
答案 1 :(得分:3)
使用线程完成。然而,这是一个高级主题,在开始使用线程之前,您最好先学习编程的基础知识。
答案 2 :(得分:2)
你可能需要多线程。您可以从about.com
中的教程开始答案 3 :(得分:1)
还有“AsyncCalls”库可以满足您的需求。 请查看http://andy.jgknet.de/blog/?page_id=100