原函数是这样的……,平时短时间用没有发现问题,如果软件长时间运行在跨过深夜0点时会卡死在此函数中,并且查找原因十分困难,过程一言难尽
void Widget::Sleep(int msec)
{
QTime dieTime = QTime::currentTime().addMSecs(msec);
while( QTime::currentTime() < dieTime )
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
更改如下,
void Widget::Sleep(int msec)
{
qint64 dieTime = QDateTime::currentDateTime().toMSecsSinceEpoch();
while( QDateTime::currentDateTime().toMSecsSinceEpoch()-dieTime < msec )
{
QCoreApplication::processEvents(QEventLoop::AllEvents,100);
QThread::msleep(1);
}
}
上面一种在后期应用中发现此方法对性能有轻微影响,
更换下面方法后解决了高速通讯速度达不到的问题
或者使用另一种
void AcqPressure::delaymsec(int msec)
{
QEventLoop loop;
QTimer::singleShot(msec,&loop,SLOT(quit()));
loop.exec();
}