没别的意思就是想看看 你是怎么让3个线程协同工作,怎么和vcl同步的,最好能有不同的同步代码 1.vcl同步  2.互斥元  3.信号量  4.临界区小弟在这里跪谢

解决方案 »

  1.   

    有测试通过的代码  请发到[email protected]我如果测试通过 立刻结贴
      

  2.   

    to:halfdream(哈欠) 这并不是处理显示值得不值得的问题    而是想知道 怎么和vcl同步的,最好能有不同的同步代码 1.vcl同步  2.互斥元  3.信号量  4.临界区    叫你写个windowsxp++ 来展示多线程 你觉得你可以吗,记住不要小看问题,夜不要小看别人
      

  3.   

    大家回到技術討論來吧!我個人也覺得 多線程操作VCL界面, 好象不是很好的方法!!一般多線程, 都是一個操作主界面更新, 其它的做些後台邏輯處理!!!>>最好能有不同的同步代码 1.vcl同步  2.互斥元  3.信号量  4.临界区
    找本書看下, 可能更清楚!!!
      

  4.   

    参见《Delphi6 开发人员指南》第五章多线程技术 5.2.4 和VCL同步摘录几句概括性的话如下:(具体技术和方法最好自己去研究)
    1. 只能在应用程序的主线程中访问VCL的属性和方法。
    2. TThread提供了名为Synchronize()的方法,该方法允许在应用程序的主线程内执行线程中的方法。该方法自动实现同步(内部实际上是串行执行)
    3. 另外一种技术可以作为 Synchronize() 的替代品,可以使用 SendMessage() 或 PostMessage() 来发送消息到另一个线程环境操纵的窗口。
      

  5.   

    最关键的就是使用Synchronize() 方法,它会处理好同步的问题的。
    看一下Delphi自带的那个用线程进行种排序的例子吧,那里面有。
      

  6.   

    再罗嗦一句:...任何访问或修改应用程序界面的代码都应该在应用程序的主线程环境中执行。这种机制的缺陷是显然的,不过表面上看上去这种机制有一定的局限性,实际上还是有一点优势的。...
    首先,只允许一个线程访问用户界面,大大降低了应用程序的复杂性。...我们不必去注意那些潜在的同步问题...此外,由于VCL只能在一个时刻被一个线程访问,因此在VCL内部就可以不考虑多线程同步问题。这样的应用程序的结构更为简洁,从而有助于提高应用程序的整体效率。