當我從TTimer
訪問全局變量或VCL時,是否需要使用Synchronize
?我使用來自TThread
的相同變量和對象,其中我已經使用同步。我需要從TTimer事件調用Synchronize嗎?
1
A
回答
11
TTimer的OnTimer事件在主線程下執行。您不必在該事件中同步對VCL的訪問
+0
非常感謝。 – Artik
+7
好了,爲了更清楚,TTimer.OnTimer事件在創建'TTimer'實例的線程的上下文中觸發,因爲'TTimer'在內部創建了一個'HWND',因此具有線程相關性。如果這恰好是主線程,那麼'OnTimer'事件將在主線程中運行,是的。但是如果'TTimer'在主線程之外被創建,那麼你將不得不同步。 –
相關問題
- 1. 我需要調用CloseHandle嗎?
- 2. 角度2事件綁定 - 我需要$事件嗎?
- 3. 我需要在OCaml中調用Random.self_init嗎?
- 4. GLSurfaceView:我需要調用onPause/onResume嗎?
- 5. SqlCeResultSet.Close - 我需要調用它嗎?
- 6. 超時後我需要調用EndInvoke嗎?
- 7. 我需要json.js文件嗎?
- 8. 從非Cocoa應用調用基礎,我需要NSRunLoop嗎?
- 9. 綁定事件偵聽器函數,我需要稍後調用函數嗎?
- 10. 總是需要javascript事件目標嗎?
- 11. 我是否需要在DOM事件回調中使用閉包?
- 12. 我需要從循環Ajax調用
- 13. 我需要在調用Create方法後關閉文件流嗎?
- 14. 我需要使用NSKeyedArchiver嗎?
- 15. 我需要使用NSLock嗎?
- 16. 我需要鎖嗎?
- 17. 我需要BackgroundWorker嗎?
- 18. 我需要app.config嗎?
- 19. 我需要getJson嗎?
- 20. 我需要phpMyAdmin嗎?
- 21. 我需要鎖嗎?
- 22. 我需要TestFlight嗎?
- 23. 我需要PolylineOptions嗎?
- 24. 如果我使用LoadIconWithScaleDown創建它,我需要調用DestroyIcon嗎?
- 25. 不需要的異步事件調度
- 26. jQuery:我需要keyUp和更改事件嗎?
- 27. 更改對Storyboard.Completed事件的反應。我們需要BeginInvoke嗎?
- 28. 當我不需要做更多的事情時,我需要做回滾或調整嗎?
- 29. 我是否需要調用MessageBox調用?
- 30. 爲什麼我們需要事件回調?
這很難理解您的問題。我會建議改寫,以使其更清晰。 –
已經回答了,但要更清楚一點,'TTimer'不以任何方式是'TThread'。 Timer是在其調用線程(在本例中爲主線程)中反覆執行某些操作的廉價方式,而Synchronize則是TThread特有的。 –