BOOL CUdpCommClient::Do() { DWORD dwIdx; HANDLE awsaEvent[3]; // awsaEvent[0] = m_hSockEvent; awsaEvent[1] = m_hWrEvent; awsaEvent[2] = m_hQuit; // while (FALSE == CThreadClient::IsEnd()) { dwIdx = ::WaitForMultipleObjects(3, awsaEvent, FALSE, m_dwIdleTime); switch (dwIdx) { case WAIT_OBJECT_0: OnWinSockEvent(); break; case (WAIT_OBJECT_0 + 1): HandleWrite(); break; case (WAIT_OBJECT_0 + 2): break; case WAIT_TIMEOUT: IdleWrite(); break; } // if (0 < m_tSessionTimeout && difftime(time(NULL), m_tTimeout) > m_tSessionTimeout) { m_tTimeout = time(NULL); HandleIdle(); } } return TRUE; }
void tTVPApplication::HandleMessage() { MSG msg = {0}; if( !ProcessMessage(msg) ) { HandleIdle(msg); } }