2013-04-09 72 views
2

真的简单,但涉及TIdThreadComponent重要的问题:在哪个线程TIdThreadComponent OnTerminate和OnStopped执行?

在哪个线程是OnTerminateOnStopped执行 - 主线程或者工作线程?

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

更新:我想我可能会使用调试器,并试图在此之后,貌似OnStopped是工作者线程中OnTerminate是主线程里面。额外的好处是调试器可以帮助确定执行其他相关的启动/停止/控制线程的功能,并减少可能的错误。

+5

您可以随时使用GetCurrentThreadID确定当前的ThreadContext并将其与MainThreadID进行比较:o) – 2013-04-09 05:32:55

+0

是的,我以后也是这样做的。虽然有用的建议。 – Coder12345 2013-04-10 02:29:44

回答

7

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