【问题标题】:In which thread is TIdThreadComponent OnTerminate and OnStopped executed?TIdThreadComponent OnTerminate 和 OnStopped 在哪个线程中执行?
【发布时间】:2013-03-31 07:11:39
【问题描述】:

关于TIdThreadComponent的非常简单但重要的问题:

OnTerminateOnStopped 在哪个线程中执行 - 主线程还是工作线程?

当我在这些事件中(并调用 VCL 属性和方法)时,我可以安全地假设我在主线程中吗?

更新:我想我可能会使用调试器,在尝试之后,看起来OnStopped 在工作线程内,OnTerminate 在主线程内。额外的好处是调试器可以帮助确定在哪里执行启动/停止/控制线程的其他相关函数并减少可能的错误。

【问题讨论】:

  • 你总是可以用 GetCurrentThreadID 确定当前的 ThreadContext 并与 MainThreadID 进行比较 :o)
  • 是的,我后来也这样做了。不过有用的建议。

标签: delphi c++builder indy indy10


【解决方案1】:

你的观察是正确的。 OnStopped 在工作线程的上下文中触发。 OnTerminated 在主线程的上下文中触发。

【讨论】:

    猜你喜欢
    • 2016-02-01
    • 1970-01-01
    • 2017-05-17
    • 2023-03-24
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2016-11-15
    相关资源
    最近更新 更多