2013-04-09 61 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