我正在创建一个OmniWorker-Task来进行一些数据处理 到目前为止,该任务能够从/向其他任务接收和发送消息。
现在我需要为此任务实现main函数。该功能将连续运行并进行数据处理,而消息将修改它的行为。
但是我在哪里放这个主要功能?
是否有类似于OmniWorker的" Execute" -method,我需要实现?
答案 0 :(得分:6)
实际上,TOmniWorker并不真正支持'monolythic execution block + messaging'成语。 TOmniWorker背后的整个想法是,大多数代码都是在消息处理程序中执行的(当然也包括从它们调用的代码中) - 就像在典型的单线程Delphi应用程序中一样。
您可以发送一条特殊消息(“开始!”)并在消息处理程序中开始执行,但请记住,在执行消息处理程序时不会处理消息。 [更具体一点 - 您可以发送它们但是如果您想要接收它们,则必须通过Task.Comm.Receive手动执行。]这并不是意料之外的,因为每个TOmniWorker都是单线程环境而且它是执行消息处理程序,它不能做任何其他事情。