建立一个网站大约要多少钱,升级访问通知正常更新,什么是同ip网站,wordpress 3.5 官方中文版假如有这样一种情况#xff0c;我们在主线程写了一个死循环#xff0c;当程序运行到主线程的死循环代码后界面便卡死点了没有反应#xff0c;这里提供几种方法处理界面假死的情况#xff0c;保证比如主线程在执行死循环没有退出的时候点击界面不会卡死能继续执行其他功能。…假如有这样一种情况我们在主线程写了一个死循环当程序运行到主线程的死循环代码后界面便卡死点了没有反应这里提供几种方法处理界面假死的情况保证比如主线程在执行死循环没有退出的时候点击界面不会卡死能继续执行其他功能。
方法1 把主程序中比较耗时的功能放入线程去执行多线程用法可以参考《QT从基础到进阶·十九》QThread多线程使用
方法2 主线程中耗时的地方加入QCoreApplication::processEvents(); 可以防止界面假死在死循环期间可以继续执行主线程中的其他的事。
QTime time;
time.start(); //从当前时间开始time.elapsed() 5000 延时5秒int i 0;while (time.elapsed() 5000) //elapsed运行while循环做为开始时间延迟5秒结束循环{QCoreApplication::processEvents(); //防止界面假死可以在死循环期间做其他事qDebug() hello i endl;_sleep(1000);}
qDebug() stop endl;方法3 C方式
while(true)
{// 下面代码和QCoreApplication::processEvents()效果一样MSG msg;while (PeekMessage(msg, NULL, 0, 0, PM_REMOVE)){TranslateMessage(msg);DispatchMessage(msg);}
}方法4 QT事件循环防止界面假死
QEventLoop eventloop;
QTimer::singleShot(5000, eventloop, SLOT(quit())); //5秒后退出事件循环
eventloop.exec();这个放在按钮里如果快速点两次按钮他会产生两个事件循环5秒后会依次出来两次 点两次pushButton_2产生两个事件循环点一次pushButton会把两个事件循环都触发结束 产生事件循环就算不触发结束在关闭程序的时候也会自动触发结束如果点了两次事件循环关闭程序时int a 0也会走两次。
注意 在防止界面假死循环或者多线程中的死循环处理中一定要加入时间延迟这样可以保证CPU不会被一直抢占不然CPU利用率会一直很高。 还有一点要注意比如点击按钮进入死循环如果加了防止假死代码界面可以动如果再次点击按钮会再次进入死循环这时候界面依旧可以动但注意的是这时候是有两个死循环正在执行需要退出两次才算真正的退出死循环。 博客主页 主页 欢迎点赞 收藏 ⭐留言 如有错误敬请指正 本文由 梦回阑珊 原创首发于 CSDN转载注明出处 代码改变世界,你来改变代码✨