什么是 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
事件是针对每个已接受的客户端连接触发一次还是重复触发。
我希望通过使用 Loop
属性 我可以定义是否重复执行 OnRun
事件方法,但无论如何,它总是重复直到我调用方法 Terminate
.我是不是错过了 属性 的要点,还是 IdThreadComponent 组件中存在错误?
在内部,TIdThreadComponent
运行一个 TIdThread
,它实际上在其 Execute()
方法中有 2 个循环:
外循环是一个普通的
while not Terminated
循环。在该循环内,它首先检查是否已调用
Stop()
方法来挂起线程,然后(如果停止则唤醒后)它检查Loop
确定Run()
方法应该被调用一次还是循环调用。
因此,Loop
属性 在 TIdThreadComponent
中并没有太大的影响,因为外部 while not Terminated
循环。它真正做的是帮助您控制线程检查其 Stopped
属性 的频率,以了解何时进入休眠状态(如果有的话)。
Loop
逻辑主要供 TIdTCPServer
使用,以控制其 OnExecute
事件是针对每个已接受的客户端连接触发一次还是重复触发。