主题:问个简单的线程问题
比如,我在主函数中做一个进度条,在线程中做一个进度条,我想让她们同时在显示进度,而实际情况是主函数的进度条满格之后线程中的进度条才开始显示进度
不是一起的,是有先后顺序的,很是不明白,按理来说应该各跑各的
void CFuleDlg::OnOK()
{
// TODO: Add extra validation here
AfxBeginThread(threadFunc,this);
// m_pro2.CenterWindow();
m_pro2.ShowWindow(1);
m_pro2.UpdateWindow();
m_pro2.SetRange(1,180);
for (int i=0;i <180;i++)
{
m_pro2.SetPos(i);
Sleep(10);
m_pro2.UpdateWindow();
}
CloseHandle(hwnd);
//CDialog::OnOK();
}
UINT CFuleDlg::threadFunc(void *pParam)
{
CFuleDlg *dlg=(CFuleDlg*)pParam;
int x=1;
int y=1;
int z=1;
int z1=1;
int z2=1;
int z3=1;
dlg->m_pro.CenterWindow();
dlg->m_pro.ShowWindow(1);
dlg->m_pro.UpdateWindow();
dlg->m_pro.SetRange(1,180);
for (int i=0;i <180;i++)
{
dlg->m_pro.SetPos(i);
Sleep(10);
dlg->m_pro.UpdateWindow();
}
return 0;
}
不是一起的,是有先后顺序的,很是不明白,按理来说应该各跑各的
void CFuleDlg::OnOK()
{
// TODO: Add extra validation here
AfxBeginThread(threadFunc,this);
// m_pro2.CenterWindow();
m_pro2.ShowWindow(1);
m_pro2.UpdateWindow();
m_pro2.SetRange(1,180);
for (int i=0;i <180;i++)
{
m_pro2.SetPos(i);
Sleep(10);
m_pro2.UpdateWindow();
}
CloseHandle(hwnd);
//CDialog::OnOK();
}
UINT CFuleDlg::threadFunc(void *pParam)
{
CFuleDlg *dlg=(CFuleDlg*)pParam;
int x=1;
int y=1;
int z=1;
int z1=1;
int z2=1;
int z3=1;
dlg->m_pro.CenterWindow();
dlg->m_pro.ShowWindow(1);
dlg->m_pro.UpdateWindow();
dlg->m_pro.SetRange(1,180);
for (int i=0;i <180;i++)
{
dlg->m_pro.SetPos(i);
Sleep(10);
dlg->m_pro.UpdateWindow();
}
return 0;
}