怎么样在退出的时候让串口的WaitCommEvent返回

2026年09月10日 14:45
有2个网友回答
网友(1):

int CSerialPort::UninitPort()
{
    m_bExitThread = TRUE;
    if (m_hSendDataThread)
    {
        SetEvent(m_hSendDataEvent);
        WaitForSingleObject(m_hSendDataThread, INFINITE);
        SAFE_DELETE_HANDLE(m_hSendDataEvent);
        SAFE_DELETE_HANDLE(m_hSendDataThread);
    }
 
    if (m_hReceiveDataThread)
    {
        SetCommMask(m_hSerialPort, 0);
        if (WaitForSingleObject(m_hReceiveDataThread, 500) == WAIT_TIMEOUT)
            TerminateThread(m_hReceiveDataThread, 10);
        SAFE_DELETE_HANDLE(m_hSendDataThread);
    }
 
    if (m_hSerialPort != INVALID_HANDLE_VALUE)
    {
        CloseHandle(m_hSerialPort);
        m_hSerialPort = INVALID_HANDLE_VALUE;
    }
 
    m_bExitThread = FALSE;
    return 0;
}

网友(2):

关注这个问题