我在程序中开辟了一个线程 程序如下:
void CZyUSBCANDlg::OnBtnRecvdata()
{
USBRecvThread0=AfxBeginThread(XferLoop_Recv0,this,THREAD_PRIORITY_HIGHEST,0,CREATE_SUSPENDED,NULL);
USBRecvThread0->m_bAutoDelete=FALSE;
USBRecvThread0->ResumeThread();
//开启此线程
}
之后通过另一个线程CloseThread=AfxBeginThread(Close_Recv_Thread, this,THREAD_PRIORITY_HIGHEST);去关闭 USBRecvThread0线程
CloseThread的线程函数如下:
UINT Close_Recv_Thread( LPVOID params )
{
CZyUSBCANDlg *dlg = (CZyUSBCANDlg *) params;
DWORD dw0;
位置1:dlg->m_can0recvdata.SetWindowText("CAN0接收已停止!!!");
dw0 = WaitForSingleObject(USBRecvThread0->m_hThread,INFINITE);
if(dw0 == WAIT_OBJECT_0)
{
位置2:dlg->m_can0recvdata.SetWindowText("CAN0接收已停止!!!");
delete USBRecvThread0;
}
}
现在出现的问题就是若在位置2dlg->m_can0recvdata.SetWindowText("CAN0接收已停止!!!");文本输出很慢,若在位置1快在网上查了资料说是由于WaitForSingleObject()函数的原因 英文有没有其他方法既能关闭线程又能很快输出文本信息的 |