這個類在打開 串口PL2303時,重復打開會出現串口被占用的情況,看了下是CreatFile沒成功。
再次打開又可以了。
在do
{
SetEvent(m_hShutdownEvent);
} while (m_bThreadAlive);
TRACE("Thread ended\n");
//AfxMessageBox(L"ASGBRWHG")
這里加上一個彈窗就可以重復打開,為什么這個m_bThreadAlive 需要延遲,求各位大佬幫忙解答
uj5u.com熱心網友回復:
解決了 關閉不徹底 ClosePort 要加上 if((m_Thread!=(CWinThread*)0xcdcdcdcd)&&(m_Thread!=NULL)){
TerminateThread(m_Thread->m_hThread,NULL);
m_Thread->ExitInstance();
m_Thread->Delete();
}這段代碼就行了
uj5u.com熱心網友回復:
0xcdcdcdcd表示變數未初始化,VS提供你有重大問題。這代碼在Release下有問題。uj5u.com熱心網友回復:
m_Thread = NULL; //先初始化好……
WaitForSingleObject(m_Thread, 2000); //等待執行緒結束
uj5u.com熱心網友回復:
我發現是m_Com.StartMonitoring(); 監視執行緒引起的,把這句話屏蔽了,就可以重復打開串口///如果執行緒存在,則關掉行程
if (m_bThreadAlive)
{
do
{
SetEvent(m_hShutdownEvent);
} while (m_bThreadAlive);
TRACE("Thread ended\n");
//AfxMessageBox(L"ASGBRWHG");
}
會不會是m_hShutdownEvent 沒完成,就CreatFile(), 導致創建句柄失敗。 想知道原因
uj5u.com熱心網友回復:
在別的串口芯片上比如Ch340使用上位機打開串口 就不會出現重復打開串口間隔性創建句柄失敗的情況轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/171516.html
標籤:進程/線程/DLL
