当QThread线程的run()函数return之后,该线程就会发出finished()信号。
但是,有时候,在finished()信号的槽中,发现该线程依然正在运行,即没有真正的finished,通过调研running()方法,或者isFinished()方法即可验证。
此时,如果想继续使用该QThread,即重新进入该线程的run()函数,必须要等到该线程完成finished()之后,才能够调用start()方法,重新进入run()。
解决方法:
在finished()信号的槽中,调用该线程的wait()方法,该线程的wait()返回后,表明该线程真正的finished的了。
然后调用start()方法。
就像下面代码这样:
if ( pWorker->isRunning() )
{
pWorker->wait();
}
pWorker->start();