一个解决循环内界面假死的方法
来源:互联网 发布:淘宝客返利源码下载 编辑:程序博客网 时间:2024/06/05 06:47
前段时间写一个有进度条的单线程窗体程序时,碰到一个问题,即当进度条对应的的任务循环运行时,界面出现假死现象。具体表现为:程序界面没有反映,或者说反映极慢。曾经试过用多线程来处理这个问题。但是处理线程里面用循环来设置进度条进度位置,仍然导致界面无响应。到网上搜了一下,终于找到一种解决办法。请参看以下代码:
/* -------------------------------------------------------------------------
Ok, call this to pump messages...
------------------------------------------------------------------------- */
void CDoeventsDlg::DoEvents()
{
MSG msg;
if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { //从Windows消息队列中取出消息
if (msg.message== WM_QUIT)//如果消息为退出,发送退出消息
{
::PostQuitMessage(-1);
}
if(!AfxGetApp()->PreTranslateMessage(&msg))//如果无法预处理消息
{
::TranslateMessage(&msg);//转换消息
::DispatchMessage(&msg);//发送消息
}
}
AfxGetApp()->OnIdle(0);AfxGetApp()->OnIdle(1);//消息队列为空时闲置一段时间
}
此段代码的作用就是处理一下界面的消息,使界面线程能掌握一下控制权。经试验,在
设置进度条进度位置后调用该函数后,能明显改善界面的响应程度。
- 一个解决循环内界面假死的方法
- 一个解决循环内界面假死的方法
- 一个解决循环内界面假死的方法
- 最简单解决c#在UI线程中执行耗时方法导致界面假死的方法
- 最简单解决c#在UI线程中执行耗时方法导致界面假死的方法
- 解决C#界面假死问题
- MFC 界面假死问题解决方法
- 费时操作界面无假死的BackgroundWorker方法
- **ios 解决Block内用self循环引用的方法**
- 界面假死的一种情况
- 可以防止界面假死的刷新代码
- winform 程序界面假死的处理
- 程序界面假死的一种解决方法 - 线程
- QT GUI界面假死的处理
- QT GUI界面假死的处理
- vs2017在排除一个文件夹下所有文件过程中很慢导致假死问题的解决
- vs2008打开aspx文件时设计界面死机的解决(Visual Studio 2008切换设计视图假死正在安装)
- 有关于假死状态的改正,一个菜鸟的投机取巧的方法
- 4月29日俱乐部北京活动:微软总部专家分享如何建立一个高素质的外包团队
- oracle笔记
- 拨开迷雾-单片机和嵌入式LINUX开发的那点事儿(上)
- 在无线J2ME设备上实现HTTP协议
- 邮件系统工作基本原理
- 一个解决循环内界面假死的方法
- 拨开迷雾-单片机和嵌入式LINUX开发的那点事儿(下)
- portlet标签
- IIS6.0应用程序池回收和工作进程
- 模板技巧知识
- 国内最强悍的工作流平台
- 如何调整Linux内核参数
- 文件流
- 使用多线程加载多个Xml文件到TreeView控件