程序如下:现在我点那个按钮就执行这一段,功能是采集数据,并显示一次。现在我想做的修改是点击按钮后,程序能够循环执行这一段,间隔1妙左右,并且能够退出。我自己加了一句while(true)后,程序跑死了,好久才能退出。请高手指教啊!!!
void CCH372UpDownDlg::OnButton2Up() //端点2上传
{


CWinThread * mTrdUp2 = NULL;
UpdateData(TRUE);
if(!m_open) {
MessageBox("请先打开设备!","操作有问题",MB_OK|MB_ICONSTOP);
return;
}
if(T2UHandle == INVALID_HANDLE_VALUE)
{
UCHAR DeviceName[128];
memcpy(&DeviceName[0],CH375GetDeviceName(mIndex),sizeof(DeviceName));
T2UHandle = CreateFile( (char *)&DeviceName[0], GENERIC_READ | GENERIC_WRITE,  // 打开设备
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if(T2UHandle == INVALID_HANDLE_VALUE)
{
MessageBox("无法打开设备!","DEBUG372",MB_OK|MB_ICONSTOP);
return;
}
}
if(m_uplen2 > mCH375_PACKET_LENGTH*8 )
{
MessageBox("上传长度无效!","DEBUG372",MB_OK);
return;
}
//线程句柄有效,说明上次线程已自然退出
if(mTrdUp2 != INVALID_HANDLE_VALUE){
CloseHandle(mTrdUp2); //释放线程句柄
mTrdUp2 = NULL;
}
    //建立上传线程
mTrdUp2 = AfxBeginThread(mThreadUp2,this,THREAD_PRIORITY_NORMAL,0,0,NULL); 
if(mTrdUp2)
{
m_trdup2 = TRUE; //线程启动标志
}
else
{
MessageBox("端点2上传线程启动失败","DEBUG372",MB_OK|MB_ICONSTOP);
m_trdup2 = FALSE;
return;
}
Sleep(10);
UpdateData(FALSE);
}UINT mThreadUp2(LPVOID pParam) //端点2上传线程
{
UCHAR mBuf[mCH375_PACKET_LENGTH*8];
ULONG dlen,datalen;
CCH372UpDownDlg *pDlg = (CCH372UpDownDlg *)pParam;
pDlg->m_btnup2.EnableWindow(FALSE); if(pDlg->m_open && pDlg->m_trdup2) //设备打开,线程启动
{
/**************在线程中用CreateFile打开设备,因为每个句柄同一时候只能执行一个API**************************/
if ( pDlg->T2UHandle != INVALID_HANDLE_VALUE ) {  // 打开设备成功
datalen = min( pDlg->m_uplen2, sizeof(mBuf));
dlen = datalen;
if(CH375ReadData((ULONG)pDlg->T2UHandle,&mBuf[0],&dlen)){//操作成功输出数据
CHAR buffer[mCH375_PACKET_LENGTH*8*2+1];
ULONG i,j;
for(i=0,j=0;i<dlen;i++)

{
sprintf(&buffer[j],"%01d ",mBuf[i]);
j += 1;
}
char tem[50]="";
UpCount=0;
sprintf(tem,"Up: %d",UpCount);
::SetDlgItemText(WndHandle,IDC_UPDATABuf,""); buffer[j] = '\0';
char buffer2[40]="温度:**.*℃  湿度:**%\0";
buffer2[5]=buffer[0];
buffer2[6]=buffer[1];
buffer2[8]=buffer[2];
buffer2[18]=buffer[3];
buffer2[19]=buffer[4];
ShowUpdata(buffer2,50); //显示数据
{//更新长度显示
char tem[50]="";
UpCount=UpCount+dlen;
sprintf(tem,"Up: %d",UpCount);
SetDlgItemText(pDlg->m_hWnd,IDC_UpCount,tem);
}
}
else if ( !pDlg->m_close ) MessageBox(NULL,"端点2上传失败!如果设备断开过那么请先关闭本程序","DEBUG372",MB_OK|MB_ICONSTOP);
}
}
pDlg->m_trdup2 = FALSE;
pDlg->m_btnup2.EnableWindow(TRUE);
//ExitThread(0);
return 0;
}