我在一个线程里作高速数据采集并实时绘图,当我拖动程序窗口后,绘图停止了而且界面上的按钮也失效了,只有我在程序外面点一下再切换到程序才能正常,这到底是怎么回事,如何解决

解决方案 »

  1.   

    >>当我拖动程序窗口后,绘图停止了而且界面上的按钮也失效了,
    估计锁死了,资源争夺锁死了>>如何解决线程的数据,用postMessage 发送给 Form, 而不是直接对form的控件操作
      

  2.   

    基本上你的要对VCL进行操作时,应该放到主线程中
    一是将绘图的代码放到主线程中,如Ari所说的,发送一条消息给主窗体,主窗体接到这个消息后开始调用一个函数绘图。另一个更简单的方法是调用Thread类的Synchronize方法。自定义一个事件, 主窗体处理这个事件。
      

  3.   

    postmessage 给main form,告诉form需要repaint
      

  4.   

    线程中是用Synchronize()方法,现在知道原因是线程太快了,将线程优先级设为lower后就不会出现问题,但优先级低后数据采集可能又会有问题,不知道有没有更好的方法
      

  5.   

    另外采用postmessage方法在系统忙时(如拖动窗口时)能保证这个消息及时到窗体上吗,并且保证绘图数据的正确