中国开发网: 论坛: 程序员情感CBD: 贴子 336048
pcplayer: 这个和 delphi 的事件无关。你要理解,事件只不过是函数调用而已。
至于 ProcessMessages,只不过是让你的程序响应系统消息而已。

比如有 a,b,c,d 四个类;

d 有个事件eD触发,在事件里,执行 C 的某个方法;
c 在执行这个方法的时候,触发一个事件eC,在这个事件里,你去执行 b 的某个方法;
b 在执行这个方法的时候,触发一个事件 eB,在eB这个事件里,你去调用 a 的某个方法;

上述过程,不过就是通过“事件”这种语法,把很多个方法组成一个调用链而已。完全可以展开来写,把所有的方法的代码都写到一个函数里去。

在一个线程里,顺序执行那么多个方法,你还想干嘛?

这时候,给一个 ProcessMessage,不过就是在中间中断你的顺序执行,让响应那个系统消息的代码先执行,等到那段相应系统消息的代码执行完了,再继续执行你刚才的代码序列。这时候,当然可以把由 ProcessMessage 调用到的响应消息的代码看作是潜逃到你那个事件调用序列中间的一段代码。

总之,在一个线程里,都是顺序执行,你还想干啥?

真要干点啥,又限制在一个线程里,就只好用 Fiber 啦。或者如 Holly 说的,自己去干预函数调用栈了。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录