初学多线程遇到一个很大的问题:
开始我的代码如下:
void CsniffDlg::OnBnClickedButton1()
{
int count =1;
while(XXXX)
{
if(count==1)
{
count=0;
CreateThread(NULL,0,build,this,0,&threadID);//将this传给新建线程函数
}
XXXX
}
}
DWORD WINAPI build(LPVOID lpParameter){ //此函数为CsniffDlg友元
对界面的操作
}
结果问题出来了界面没有任何反应,不能点击等操作。
后来我分析应该是主线程里面的while循环造成的,主线程一直在while,根本没法点击界面。
故更改后为
void CsniffDlg::OnBnClickedButton1()
{
HANDLE hwnd=CreateThread(NULL,0,build,this,0,&threadID);
}
DWORD WINAPI build(LPVOID lpParameter){
while(XXX)
界面操作;
}
这样的话主线程大部分时间在空闲,故用户可以点击界面。