很多文章里MFC多线程讲的比较复杂,这里直接上代码,最简洁的实现方式:
一、CreateThread
1.在Dlg.h定义protected 变量:
//加的多线程用变量 HANDLE hThread; DWORD ThreadID;
volatile bool m_bRun; UINT UDPReceiveProc(LPVOID lpParam); void CSerialTestDlg::OnClickedButtonUdpbroad() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,&ThreadID); return ; } UINT ThreadProc(LPVOID lpParam){ while(1); }
二、AfxBeginThread
头定义:
static UINT UDPReceiveProc(LPVOID pParam); //多线程使用
DWORD WINAPI UDPReceiveProc(LPVOID lpParam); void CSerialTestDlg::OnClickedButtonUdpbroad() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); //hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)UDPReceiveProc,NULL,0,&ThreadID); AfxBeginThread(UDPReceiveProc,&txt_udp_data,THREAD_PRIORITY_IDLE); return ; } //UINT UDPReceiveProc(LPVOID lpParam){ CreateThread UINT CSerialTestDlg::UDPReceiveProc(LPVOID pParam){ CEdit *udp_data=(CEdit *)pParam; }