什么是 IdThreadComponent 循环 属性?

What is IdThreadComponent Loop property?

我希望通过使用 Loop 属性 我可以定义是否重复执行 OnRun 事件方法,但无论如何,它总是重复直到我调用方法 Terminate.我是不是错过了 属性 的要点,还是 IdThreadComponent 组件中存在错误?

在内部,TIdThreadComponent 运行一个 TIdThread,它实际上在其 Execute() 方法中有 2 个循环:

  • 外循环是一个普通的while not Terminated循环。

  • 在该循环内,它首先检查是否已调用 Stop() 方法来挂起线程,然后(如果停止则唤醒后)它检查 Loop确定 Run() 方法应该被调用一次还是循环调用。

因此,Loop 属性 在 TIdThreadComponent 中并没有太大的影响,因为外部 while not Terminated 循环。它真正做的是帮助您控制线程检查其 Stopped 属性 的频率,以了解何时进入休眠状态(如果有的话)。

Loop 逻辑主要供 TIdTCPServer 使用,以控制其 OnExecute 事件是针对每个已接受的客户端连接触发一次还是重复触发。