主线程与子线程同步一个变量,主线程改变了变量值,子线程收不到,该如何解决

主线程与子线程同步一个变量,主线程改变了变量值,子线程收不到
如题!主线程用for循环启动同一子线程!循环中修改一个全局变量的值,但该子线程并没有接受到该全局变量的变化!?求大神给个思路!!!!!
------解决方案--------------------
应该是Synchronize调用的内容要消息循环才执行(Synchronize是通过消息机制来处理同步的),你的主线程循环里没有处理消息。
------解决方案--------------------
ListImage如果是可视化组件的话要用Synchronize方法处理
   访问代码委托给VCL主线程执行。在线程中若要调用可视化的方法或访问其属性,可将执行代码委托给VCL主线程执行,否则会发生并发访问冲突。委托的方法是先将使用可视化组件的代码单独编成一个函数,函数原型是void 函数名(void),然后电泳TThread类的成员函数Synchronize(函数名)来调用它,VCL主线程顺序执行所有组建对该组建的访问(包括响应人机界面事件、windows系统事件等),从而不会发生冲突。
如下所示: 
  void __fastcall TNewThread::PushTheButton(void) 
   
  { 
   Button1->Click(); 
  } 
   
  void __fastcall TNewThread::Execute() 
  { 
   ... 
   Synchronize((TThreadMethod)PushTheButton); 
   ... 
  } 

------解决方案--------------------
引用:
啥是消息循环!

就是主线程有一个死循环,不断访问消息队列。

相关内容推荐