//线程函数,把参数作为指向整数的指针,并显示其内容。
UINT ThreadFunc(LPVOID xx)
{
int *p;
p=(int*)xx;
CString yy;
yy.Format("Number is %d",*p);
::MessageBox(0,yy,"提示",0);
return 0;
}
//启动线程函数,并把线程序号i的地址传给线程函数。
void CAaaaDlg::OnButton1()
{
for(int i=0;i<5;i++)
_pThread[i]=AfxBeginThread(ThreadFunc,
&i,THREAD_PRIORITY_NORMAL,0,0,NULL);
}//=========================================================
运行结果:弹出5个提示窗口,依次显示1、2、3、4、和一个不确定数。
而我期望的结果是显示0、1、2、3、4。
请教问题所在?
UINT ThreadFunc(LPVOID xx)
{
int *p;
p=(int*)xx;
CString yy;
yy.Format("Number is %d",*p);
::MessageBox(0,yy,"提示",0);
return 0;
}
//启动线程函数,并把线程序号i的地址传给线程函数。
void CAaaaDlg::OnButton1()
{
for(int i=0;i<5;i++)
_pThread[i]=AfxBeginThread(ThreadFunc,
&i,THREAD_PRIORITY_NORMAL,0,0,NULL);
}//=========================================================
运行结果:弹出5个提示窗口,依次显示1、2、3、4、和一个不确定数。
而我期望的结果是显示0、1、2、3、4。
请教问题所在?
1.2.3.4.是因为onbutton1还没有退出。i的地址有效。到最后一个时。i就出了它的生存期了。i的值也不再有效。但是地址传过去了。地址中的数据是个不定数。所以你显示的也是不定的数了。
这个是县城传递参数的基本方法。