偶在主线程正在进行一项数据量很大的处理工作时,建立一个副线程,此线程的作用是,建立一个form,显示正在后台进行数据处理,并且有...的动态显示进度。现在偶发现在副线程中建立的form仍然属于主线程,导致窗体无法显示主线程的进度。那偶应该怎么做,才能使在副线程中建立的form属于此线程而不属于主线程,使副线程中建立的窗体能够进行某些界面操作。。

解决方案 »

  1.   

    Delphi 的组件在线程中使用,实际上是运行在主线程的,应该使用同步方法来解决。。
      

  2.   

    如果用同步的化,当时主线程正在查询大批量数据,那副线程只能等到主线程完成之后,副线程的窗体才能获得CPU,如果是这样的话,达不到想要的效果啊。
      

  3.   

    对于绝大多数VCL的操作,都应该是在主线程内进行的。如果你用附属线程的办法,可以通过消息来完成同步。
      

  4.   

    把界面无关的操作放在后台线程
    如果需要控制VCL可视化组件,比如窗体、进度条什么的,
    可以用线程消息或者回调函数来控制
      

  5.   

    我已经实现了在副线程中使用VCL,但是没有使用消息来完成同步,这个方法比较奇怪。TO:wudi_1982,用消息来完成同步???能不能说的明确一点。
      

  6.   

    在线程里每执行一下,向窗体发一个消息,窗体收到消息后更新界面!
    这就是线程同步,所以要用POSRMESSAGE,不要用SENDMESSAGE