3

我正在创建一个 OmniWorker-Task 来进行一些数据处理。
到目前为止,该任务能够从/向其他任务接收和发送消息。

现在我需要实现这个任务的主要功能。该函数将连续运行并进行数据处理,而消息将修改其行为。

但是我把这个主要功能放在哪里呢?
对于 OmniWorker,是否有类似“执行”的方法需要实现?

4

1 回答 1

6

实际上,TOmniWorker 并不真正支持“单一执行块 + 消息传递”的习语。TOmniWorker 背后的整个想法是,大部分代码都在消息处理程序中执行(当然,在从它们调用的代码中) - 就像在典型的单线程 Delphi 应用程序中一样。

您可以只发送一条特殊消息(“开始!”)并在消息处理程序中开始执行,但请记住,当您的消息处理程序正在执行时,消息不会被处理。[更具体地说-您可以发送它们,但如果您想接收它们,则必须通过 Task.Comm.Receive 手动完成。] 这并不出人意料,因为每个 TOmniWorker 都是单线程环境,而它执行消息处理程序它不能做任何其他事情。

于 2011-01-20T17:22:10.963 回答