用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;
}