有两个程序,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;
如果A2中的条件为真,则必须调用过程A1,但是当A2仍在运行时会发生这种情况,这是我不想要的.
应该发生的是:如果A2中的条件为真,则应该完成A2,并且在离开A2之后应该调用过程A1.
一个丑陋的解决方案是设置一个定时器,在延迟确认A2完成后调用A1.
但必须有更好的方法,对吗?
编辑:在我的情况下A1和A2是事件,所以他们没有被代码调用,我不能只是在A2完成后从调用过程调用A1.
鉴于你的约束,听起来你想在返回之前调用它PostMessage
作为最后一件事A2
.该PostMessage
参数应设置使触发A1
事件.唯一要担心的是竞争条件,但我不确定这将是Windows消息队列的问题.