精简的程序是这样:主对话框的BTN点击之后创建了一个辅线程,辅线程里创建一个对话框和两个BTN,然后辅助线程
while(1)
{
if(bshow)
dlg.show();
else
dlg.hide();
sleep(1000);
}
运行之后,主对话框会死。而且CPU占用率0%。暂停程序,程序停在辅线程的sleep里。大概问题是出在辅助线程不能操作UI。UI是非线程安全的。有什么书详细描述UI非线程安全的吗?介绍本看看。
while(1)
{
if(bshow)
dlg.show();
else
dlg.hide();
sleep(1000);
}
运行之后,主对话框会死。而且CPU占用率0%。暂停程序,程序停在辅线程的sleep里。大概问题是出在辅助线程不能操作UI。UI是非线程安全的。有什么书详细描述UI非线程安全的吗?介绍本看看。
解决方案 »
- 求大神帮我下一个pudn文件
- MFC中有什么好用的绘制曲线控件? 比如zedgrahp这样的
- 请问/MP 是编译器的什么属性
- 如何在用vc atl 编写com的时候,使编写出的控件具有office风格?
- 程序在运行过程中图标被改变,请问各位大侠是什么原因啊?
- 关于系统钩子的问题,救救我吧,哥哥姐姐们!!!!!!!!!!!!!!!!!
- 如何修改DC的坐标原点?
- 谁有旋转矩阵的算法?
- "scroll.h"这个文件在哪里有?
- 求助!!!!!我中了bluestar007的木马了。
- 用VS2010开发,打印预览时,MFC不隐藏菜单栏,手动隐藏出现问题
- MFC中分割视图切换成普通视图后不显示,需要移动窗口才显示普通视图
doevents( void )
{
MSG msg; if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}void
delay( DWORD times )
{
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
doevents();
dwEnd = GetTickCount();
} while( ( dwEnd - dwStart ) <= times );
}
用用俺常用的delay( 1000 );试试