我创建了个线程,在线程里读串口数据
CWinThread* thread = AfxBeginThread(LongHerderThread,(LPVOID)this,THREAD_PRIORITY_NORMAL,0,0,NULL);中途如果想停止的话,需要安全退出。但是现在只要点击界面的终了按钮,就会爆出各种各样的错误。CDialogEx::OnCancel();
用他结束线程后,再退出,一样会报错。PostThreadMessage(Rthread->m_nThreadID, WM_QUIT,0,0);请教安全退出的方法。
CWinThread* thread = AfxBeginThread(LongHerderThread,(LPVOID)this,THREAD_PRIORITY_NORMAL,0,0,NULL);中途如果想停止的话,需要安全退出。但是现在只要点击界面的终了按钮,就会爆出各种各样的错误。CDialogEx::OnCancel();
用他结束线程后,再退出,一样会报错。PostThreadMessage(Rthread->m_nThreadID, WM_QUIT,0,0);请教安全退出的方法。
然后等待读串口的线程自己结束。(当然你的读串口线程必须可以检测到串口关闭,并自己结束)
然后就和没有打开这个线程一样结束你的程序了。
// Create.
HANDLE hComm = ::CreateFile(...);
//...
HANDLE hThread = ::CreateThread(...);// Close
CloseHandle(hComm);
::WaitForSingleObject(hThread,...);
while(true == =bFlag)
{
....
}
安全结束线程的时候将bFlag改成 false就退出线程了,但是有一个缺点,就是要等线程退出后才会出可形成程序,如果用在IE上,有点延时(个人经验),求交流。