CMyView
  CMyDoc     ---------------------
(创建线程)     CSpliWndView
                (MSComm串口)程序一运行就能接受MSComm口数据m_Dist,在CMyDoc类中创建一线程,通过按钮命令点击按钮后进入线程,线程里面有个循环,现在需要再每次执行循环之前接收最新的串口数据m_Dist。
可是我用pSpliWndView->m_Dist放在线程里面的循环函数部分之前,只能得到第一次的m_Dist值(也就是刚进入线程里的值),也就是m_Dist的值不能在线程里面更新。可实际上m_Dist的值是更新着的~~~~~~~~~~~~~~~~~~求高手解答!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    哪位帮我看看呀!!!!!!!!!!谢谢了,急等啊。不知道是什么问题,用过很多种办法,在线程里面sleep()也没效果
      

  2.   

    你好像没有说清m_Dist是如何得到赋值的。
      

  3.   

    如果是从界面输入的数值需要UpdateData(1);来使其得到赋值,但在线程中你要用UpdateData(1);的话是需要一些办法的。
      

  4.   

    应该是线程函数的问题,你要把m_Dist变成全局的
      

  5.   

    m_Dist就是全局变量啊,就是从串口接收的数据
      

  6.   

    恩 是呀。
    串口的数据的读取都没问题的,也能更新
    关键是在Doc类的线程里面获取数据有问题,只能得到刚进入线程时m_Dist的数据(线程里面是一个循环),
    后面循环的时候每次都需要重新获取m_Dist的值,可是m_Dist获取的值不能更新!!!!!!!
      

  7.   

    我觉得这情况用全局变量不好吧 
    应该接收数据的时候 new一个buffer 然后发消息给主窗口 让主窗口处理这些数据。全局变量得做读写同步,数据量大的话,感觉影响效率啊