最近项目上需要依次调用两个线程处理事情,目的是先跑完第一个线程,再跑第二个线程。那么这里就需要一个延时来给予第一个线程足够的时间,当它跑完时再执行第二个线程。
我最开始的想法是,FirstProcess();
Delay(循环跑空函数);
SecondProcess();
很明显是错的,因为代码进入第一个线程后Delay()只是把程序阻塞在了这个位置,SecondProcess到时间了仍然会跑,在阻塞期间,整个软件反而会卡死。
FirstProcess();
MyDelay(sometime);
SecondProcess();
void MyDelay(int timer)
{
QElapsedTimer et; //QElapsedTimer常用于计算两个事件之间经过的时间
et.start();
while(et.elapsed()<timer)
{
QCoreApplication::processEvents(); //根据指定的标志处理调用线程的所有挂起事件,直到不再有要处理的事件为止。
}
}
这才是正确的做法。