我什么时候需要在TThread中同步?

Ben*_*iss 4 delphi multithreading tthread

我知道你需要synchronize (yourprocedure)设置例如标签的文字.但是关于:

  1. 阅读标签的文字.
  2. 切换/设置标签的启用属性.
  3. 调用其他标签程序/功能(例如onclick事件).

当我需要使用时,是否有一个简单的规则来了解/记住synchronize

PS.:同步类似于PostMessage/SendMessage吗?

Rem*_*eau 10

简单的经验法则:需要同步对VCL UI组件的任何访问.这包括读取和写入UI控件属性. Win32用户界面,尤其是和对话框,可以直接在工作线程中使用而无需同步.MessageBox()TaskDialog()

TThread.Synchronize()类似于SendMessage()(事实上​​,它曾经SendMessage()在Delphi 5及更早版本中使用内部实现). TThread.Queue()类似于PostMessage().