如何同时使用两个功能?

时间:2010-06-21 08:26:12

标签: delphi function

嗨,我是delphi的新手。如何同时使用这两个功能? function a(...):integer; function b(...):integer;

因为b等到a finshed。

4 个答案:

答案 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