Run a QTimer on a separate QThread which doesn’t do anything else.
If you’re running the timer on an already busy thread the timeout events may not come on time or not at all.
Make a worker class e.g. “PingPacketWorker”, implement a slot that does pinging.
Make a QThread.
Connect your QTimer and PingPacketWorker signal/slots.
Start the timer.
Call moveToThread on the PingPacketWorker and the QTimer, the timer should restart because of moveToThread, note you can only start / stop it on the owner thread!
You could also increase your QThread’s priority since you asked for “the most accurate” solution …
Update:
Also, set QTimer::setTimerType(Qt::PreciseTimer)
The default Qt::CoarseTimer is less precise (5% of the interval)
4
solved The most accurate timer qt C++