1 将程序改为线程运行:
CSerial { protected: CWinThread* m_pThreadMonitor; void ThreadFunc1(); public: void ProFunc1(); } UINT Func1Proc(LPVOID wParam) { CSerial *pSerial = (CSerial *)wParam; pSerial->ProFunc1(); return 0; } CSerial::ThreadFunc1() { m_pThreadMonitor = AfxBeginThread(Func1Proc,this); } CSerial::~CSerial() { if( m_pThreadMonitor != NULL ) { m_pThreadMonitor->PostThreadMessage(WM_QUIT,0,0); if (::WaitForSingleObject(m_pThreadMonitor->m_hThread, 100) == WAIT_TIMEOUT) { ::TerminateThread(m_pThreadMonitor->m_hThread, 0); delete m_pThreadMonitor; } m_pThreadMonitor = NULL; } }
2 多线程开发(信号量)