请教vc下线程问题???

最近在做四个通道串口同时读数据显示。建立四个线程分别对四个串口进行读数据。编译环境是vc2008。当读串口线程函数结束时,想对static显示控件清屏。但每次按钮点结束后,线程已经结束,但static显示控件最后又刷新一次(也就是说线程里刷新的数据比我清屏的慢一步,导致最后清屏不成功),想问怎么解决呢?

用GetExitCodeThread(m_Thread1,&code)判断线程是否结束也不行呢。高手能帮忙指点下吗?多谢,急用呢


**注:线程函数是类的static成员函数:两个线程调用同一个数据处理函数


其中一个线程的相关代码:同一个按钮:点一次打开线程,点一次结束线程;

void CScaleDlg::OnBnClickedBtopen1()
{  
if(!bOpen1)

      {.....
//开启监测线程1?
if (m_Thread1 = AfxBeginThread(CommThread1, this))
bExit1=TRUE;//线程标志
      }

     else

   { 

              bExit1=FALSE;//退出线程

             //清屏

     CString st;
             st="";

             SetDlgItemText(ID_STRecData1,st); 

    }

}
//接收数据线程函数
UINT CMultiScaleDlg::CommThread1(LPVOID pParam)
{
//线程函数  
    CMultiScaleDlg   *pDlg   =   (CMultiScaleDlg*)pParam; 
    CString strScale;
    strScale="";
     pDlg->iCount=0;//数据计数
    while(pDlg->bExit1)//

     {  ......

        //com通信

pDlg->ReadDataAndAnalyze(strScale);//数据分析显示

        pDlg->iCount+=1;

        if(pDlg->iCount>4)
{
 pDlg->iCount=0;//归零
strScale="";
 }
pDlg->m_RecData1=strScale;
//数据更新到主UI中-线程向对话框发送自定义消息 
::PostMessage(pDlg->m_hWnd, WM_DISPLAY_CHANGE, 0, 0);
Sleep(100);
}
return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值