我的问题是否属于多线程
我的工作是创建一个对话框,点击对话框中的一个按钮(还有其他按钮),对应的是接收数据,并对这些数据进行处理,然后保存在一个.txt中,同时把这些数据显示在对话框中。
我的问题是:我应该把哪部分拿出来用子线程处理
我尝试了这么做,按钮->对应创建一个线程->调用线程函数->接收数据(期间处理数据),然后通知主线程显示数据。尝试这么做了之后对话框上其他按钮在显示数据的同时点击没有反应,就不知道什么原因?
void CmyprojectDlg::OnBnClickedButton2()
{
DWORD threadID;
HANDLE m_hThread=CreateThread(NULL,0,FuncThread,this,0,&threadID);
Sleep(1);
CloseHandle(m_hThread);
}
DWORD WINAPI FuncThread(LPVOID lpParamter)
{
CmyprojectDlg *dlg =(CmyprojectDlg*)lpParamter;
dlg->receive_data(); //接受数据
return 0;
ExitThread(0);
}
void CmyprojectDlg::receive_data(void)
{
//有这么一句,是接收数据
iRecv=recvfrom(sClient,recv_buf,sizeof(recv_buf),0,(struct sockaddr*)&ser,&iLen_ser);
处理数据;
if(detected==1)
{
HWND hWnd = (HWND)(AfxGetApp()->GetMainWnd()->GetSafeHwnd());
::PostMessage(hWnd,WM_DISPLAY,(WPARAM)v_final,NULL);
}
}
LRESULT CmyprojectDlg::OnDisplay(WPARAM wParam,LPARAM lParam) //显示数据
{
}