baiyin 2015-06-02 07:31 采纳率: 0%
浏览 5056

程序运行一段时间后,界面不刷新 mfc

用vc2008做的程序,在自建的线程里,处理蓝牙虚拟串口通信的接收数据和实时显示!
发现程序跑40分钟左右后,界面变灰!但程序没死,数据通信显示正常。其他控件就没了。移动鼠标可以看到,也可以操作!感觉就是主界面不重绘了!如图:
图片说明
程序运行时看任务管理器的内存,也不大!应该不是内存泄漏的问题
找不出原因了!网上用PeekMessage的方法试了,还是没用!谁能帮忙给个解答!
这个线程机制以前用串口通信和usb虚拟串口通信都是正常的,没出现过这个问题!
线程代码如下:
//接收数据监测线程
UINT CBluetoothScaleDlg::CommThread(LPVOID pParam)
{
//线程函数

CBluetoothScaleDlg pDlg = (CBluetoothScaleDlg)pParam;

//连续稳定计数
pDlg->icount=0;
while(true)
{       
    //start-计算时间
    CTime StartTime,EndTime;
    CTimeSpan ebTime(0,0,0,0);
    StartTime=CTime::GetCurrentTime();

    //com通信
    pDlg->ReadDataAndDisplay();

    //end
    EndTime=CTime::GetCurrentTime();
    ebTime=EndTime-StartTime;          
    if(ebTime.GetSeconds()>3)//无信号判断?
    {
        pDlg->m_ReceiveData="无信号";

        pDlg->SetDlgItemText(IDC_EDIT_ReceivedData_Hex,pDlg->m_ReceiveData);
        //所有指示灯关闭
        //pDlg->m_ctrlIconLight.SetIcon(pDlg->m_hIconNo);                  
     }        

    Sleep(100);
}
return 0;

}

  • 写回答

5条回答

  • oyljerry 2015-06-02 08:11
    关注

    在对话框OnPaint中添加你的控件重绘等
    除了内存泄漏,其次查看一下进程的GDI,是否有泄漏

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?