主线程要执行一个复杂的操作还要响应界面操作
2011-01-04 16:45
225 查看
例如: 主线程中一个对话框的按钮事件如下:
for(int i=0; i<1000; i++)
{
Sleep(10);
if(i%100)
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!theApp.PumpMessage())
{
::PostQuitMessage(0);
return;
}
}
}
}
如果将
if(i%100)
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!theApp.PumpMessage())
{
::PostQuitMessage(0);
return;
}
}
}
去掉后,只有执行完该函数后 主线程的其他消息才能响应 导致拖动界面操作无法执行
for(int i=0; i<1000; i++)
{
Sleep(10);
if(i%100)
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!theApp.PumpMessage())
{
::PostQuitMessage(0);
return;
}
}
}
}
如果将
if(i%100)
{
MSG msg;
while(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!theApp.PumpMessage())
{
::PostQuitMessage(0);
return;
}
}
}
去掉后,只有执行完该函数后 主线程的其他消息才能响应 导致拖动界面操作无法执行
相关文章推荐
- 等待界面,执行某操作出现一个提示框,进度条显示正在执行
- 算法2_实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积
- iOS 通过添加线程依赖和信号量结合实现一个复杂界面请求多个接口时按指定顺序执行
- 011实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)
- 练习 2-7 编写一个函数 invert(x, p, n),该函数返回对x 执行下列操作后的结 果值:将x中从第p位开始的n个(二进制)位求反(即,1 变成0,0 变成1),x的其余各位保持不变。
- android执行远程地址,就会报android.os.Net..... 这个原因是网络操作不能在主线程进行
- 添加一个提示操作正在执行请等待的浮动层的几种方法
- 一个空的vector执行pop_back操作会发生什么?
- Android网络编程之一个Android下菜单系统模块的实现(主操作界面)
- 如何只通过Sandboxed Solution启动一个定时执行的操作
- delphi调用外部EXE,等待执行完毕时再响应后续操作.
- 连接excel执行Insert Into语句出现“操作必须使用一个可更新的查询”的解决
- java 怎样给一个程序设置冷却时间? 好比一个操作我一天只想让客户执行一次?
- 每天一个知识点linux(一)切换操作界面
- delphi 执行一个外部程序,当外部程序结束后言主程序立即响应
- 一个表插入操作成功后执行另一个表的插入操作(存储过程、事务)
- win7中右击“计算机”点“管理” 则出现“该文件没有与之关联的程序来执行操作。请安装一个程序,或者,如果已安装程序,请在‘默认程序’控制面板中创建关联。”
- C#定时执行一个操作
- delphi执行一个外部程序,当外部程序结束后,delphi程序立即响应