您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 用户界面线程的奇异问题

用户界面线程的奇异问题

来源:网络整理     时间:2016/8/15 6:16:19     关键词:

关于网友提出的“ 用户界面线程的奇异问题”问题疑问,本网通过在网上对“ 用户界面线程的奇异问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 用户界面线程的奇异问题
描述:

主对话框按钮一 运行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

相关图片

相关文章