2013-01-07 22 views
1

當我從TTimer訪問全局變量或VCL時,是否需要使用Synchronize?我使用來自TThread的相同變量和對象,其中我已經使用同步。我需要從TTimer事件調用Synchronize嗎?

+2

這很難理解您的問題。我會建議改寫,以使其更清晰。 –

+0

已經回答了,但要更清楚一點,'TTimer'不以任何方式是'TThread'。 Timer是在其調用線程(在本例中爲主線程)中反覆執行某些操作的廉價方式,而Synchronize則是TThread特有的。 –

回答

11

TTimer的OnTimer事件在主線程下執行。您不必在該事件中同步對VCL的訪問

+0

非常感謝。 – Artik

+7

好了,爲了更清楚,TTimer.OnTimer事件在創建'TTimer'實例的線程的上下文中觸發,因爲'TTimer'在內部創建了一個'HWND',因此具有線程相關性。如果這恰好是主線程,那麼'OnTimer'事件將在主線程中運行,是的。但是如果'TTimer'在主線程之外被創建,那麼你將不得不同步。 –