关于AfxBeginThread的一个奇怪的现象,求大牛给个解释!解决办法
关于AfxBeginThread的一个奇怪的现象,求大牛给个解释!
今天在调试一个MFC程序时发现的问题,简单的代码如下
代码一:
UINT ThreadFunc(LPVOID lpParam)
{
int *Info = (int*)lpParam;
CString strTemp;
strTemp.Format("%d",*Info);
AfxMessageBox(strTemp);
return 1;
}
void CAfxDlg::OnOK()
{
// TODO: Add extra validation here
int i =5;
while(i>0)
{
AfxBeginThread(ThreadFunc,&i);
i--;
}
//CDialog::OnOK();
}
代码二:
UINT ThreadFunc(LPVOID lpParam)
{
int *Info = (int*)lpParam;
CString strTemp;
strTemp.Format("%d",*Info);
AfxMessageBox(strTemp);
return 1;
}
void CAfxDlg::OnOK()
{
// TODO: Add extra validation here
int n,i =5;
while(i>0)
{
n=i;
AfxBeginThread(ThreadFunc,&n);
i--;
}
//CDialog::OnOK();
}
我所期望的结果是弹出0、1、2、3、4,也就是代码一运行结果,但代码二运行结果为1、1、2、3、4,这是为什么?
------解决方案--------------------
今天在调试一个MFC程序时发现的问题,简单的代码如下
代码一:
UINT ThreadFunc(LPVOID lpParam)
{
int *Info = (int*)lpParam;
CString strTemp;
strTemp.Format("%d",*Info);
AfxMessageBox(strTemp);
return 1;
}
void CAfxDlg::OnOK()
{
// TODO: Add extra validation here
int i =5;
while(i>0)
{
AfxBeginThread(ThreadFunc,&i);
i--;
}
//CDialog::OnOK();
}
代码二:
UINT ThreadFunc(LPVOID lpParam)
{
int *Info = (int*)lpParam;
CString strTemp;
strTemp.Format("%d",*Info);
AfxMessageBox(strTemp);
return 1;
}
void CAfxDlg::OnOK()
{
// TODO: Add extra validation here
int n,i =5;
while(i>0)
{
n=i;
AfxBeginThread(ThreadFunc,&n);
i--;
}
//CDialog::OnOK();
}
我所期望的结果是弹出0、1、2、3、4,也就是代码一运行结果,但代码二运行结果为1、1、2、3、4,这是为什么?
------解决方案--------------------