我有两个数据队列,用两个StringGrid来实现,我在向其中放置数据的时候没有使用到Thread,但是处理数据的时候我分别用两个Thread来分别处理,两个Thread互不干涉,只访问自己的StringGrid,那我需要考虑线程同步的问题吗?是否需要S y n c h r o n i z e函数?主要是考虑我放置数据会不会与与我处理数据的Thread冲突,因为书上说VCL是不支持多Thread的,感谢赐教!

解决方案 »

  1.   

    访问VCL,需要Sync方法的
    在Sync中处理GUI即可
      

  2.   

    是不是Sync方法执行的时候整个GUI都不会响应其他过程的访问,一直到Sync方法执行完毕。因为我收集数据往StringGrid里增加,Thread处理时删除StringGrid中的数据(删除也不是单条语句就能执行完毕的),现实世界这两件事情是完全可能同时进行的。对这些还是有点迷糊!
      

  3.   

    我的想法,请大虾指教下是不是我有误解:
        我想是不是Delphi执行都是以procedure/function为单位的,当某个过程执行的时候好像整个界面都凝固了,是不是Sync方法执行的时候也会这样,整个VCL相关的部分都等待Sync执行完毕?万望赐教!!!!
      

  4.   

    注意线程同步,只有在开发exe的时候有效。如果你开发DLL,其中包含线程和窗体,那么这种同步方法是不行的。