调用程序"延迟"的最佳方法是什么?

Hol*_*rwa 2 delphi

有两个程序,A1和A2,它们都在代码中调用函数B:

function B: boolean;
begin
  // do other stuff
end;

procedure A1;
begin
  // do stuff
  if b then
    ...
  // do stuff
end;

procedure A2;
begin
  // do stuff
  if b then
    A1; // <- how to call A1 "delayed"?
  // do stuff
end;
Run Code Online (Sandbox Code Playgroud)

如果A2中的条件为真,则必须调用过程A1,但是当A2仍在运行时会发生这种情况,这是我不想要的.

应该发生的是:如果A2中的条件为真,则应该完成A2,并且在离开A2之后应该调用过程A1.

一个丑陋的解决方案是设置一个定时器,在延迟确认A2完成后调用A1.

但必须有更好的方法,对吗?

编辑:在我的情况下A1和A2是事件,所以他们没有被代码调用,我不能只是在A2完成后从调用过程调用A1.

dwc*_*dwc 12

鉴于你的约束,听起来你想在返回之前调用它PostMessage作为最后一件事A2.该PostMessage参数应设置使触发A1事件.唯一要担心的是竞争条件,但我不确定这将是Windows消息队列的问题.