关于网友提出的“ 用户界面线程的奇异问题”问题疑问,本网通过在网上对“ 用户界面线程的奇异问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 用户界面线程的奇异问题
描述: 主对话框按钮一 运行AfxBeginThread(RUNTIME_CLASS(My_Thread));//创建线程···
然后
BOOL MyThread::InitInstance()
02 {
03 // TODO: perform and per-thread initialization here
04 CFrameWnd* pFrameWnd= new CFrameWnd(); //定义框架对象
05 pFrameWnd->CreateEx(0,AfxRegisterWndClass( CS_HREDRAW|CS_VREDRAW) ,
06 "用户界面线程示例",
07 WS_OVERLAPPEDWINDOW|WS_VISIBLE,
08 CRect(100,100,400,300),
09 NULL,
10 0); //创建窗口
11 m_pMainWnd=pFrameWnd;
12 pFrameWnd->ShowWindow(SW_SHOW); //显示窗口
13 pFrameWnd->UpdateWindow();
14 return TRUE;
15 }
创建新线程的窗口
接着新的线程的窗口 就是子线程运行到Sleep(30000);的时候···发现主对话框(主线程)也··停止了···
问题:为什么用户界面线程Sleep会影响到主线程···
解决方案1: 我新建一个工程测试下楼主代码··这情况确实存在·······会不会是VC2010的BUG?
void C用户界面线程Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
AfxBeginThread(RUNTIME_CLASS(MyThread));
}
BOOL MyThread::InitInstance()
{
// TODO: 在此执行任意逐线程初始化
cc* a=new cc;
a->Create(IDD_DIALOG1,NULL);
a->ShowWindow(SW_SHOW);
return TRUE;
}
void cc::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
Sleep(15000);//子窗口单击按钮运行到这里之后···主线程和子线程都停止了···
CDialogEx::OnOK();
}
以上介绍了“ 用户界面线程的奇异问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3297150.html