synchronize

1。synchronize方法的产生与vcl的局限性有关,因为vcl控件在同一时刻只能被单线程访问,如果多个线程同时访问vcl,vcl会出现问题。所以问了安全地访问vcl,Tthread类提供了一个方法叫synchronize,他可以让线程中的方法在主线程中执行,所以我们可以把访问vcl的代码都放在这个方法中,然后由主线程执行,从而确保vcl能被安全地访问调用.它的类型是TThreadMethod=procedure   of   object;procedure   参数:Sychronize(Method:TThreadMethod);   
  2。当创建一个线程时,vcl会在主线程中创建一个隐含的线程窗口,这个窗口的作用就是把synchronize调用的访问vcl的方法排队.synchronize把Method参数传递过来的方法保存在thread的fmethod字段中然后给线程窗口发一个cm_execproc消息,并把消息的lparam参数设为self,当线程窗口收到这个消息时,就调用Fmethod所制定的方法. 
原文地址:https://www.cnblogs.com/jxgxy/p/2085872.html