qt/LedOK/ttimer.cpp
2022-01-20 10:08:17 +08:00

27 lines
759 B
C++

#include "ttimer.h"
#include <QDateTime>
#include <QDebug>
SyncTimer::SyncTimer(int inter) {
this->inter = inter;
connect(this, &QThread::finished, this, &QThread::deleteLater);
}
void SyncTimer::run(){
try {
long curTime = inter;
if(curTime <= 0) return;
msleep(curTime);
long exeTime = QDateTime::currentDateTime().toMSecsSinceEpoch();
while(inter > 0) {
inter = 0;
emit timeout();
curTime = inter;
if(curTime<=0) return;
exeTime += curTime;
curTime = QDateTime::currentDateTime().toMSecsSinceEpoch();
if(exeTime > curTime) msleep(exeTime - curTime);
else exeTime = curTime;
}
} catch (...) {}
}