[Interest] Set a timer for a different thread

Tom Isaacson Tom.Isaacson at navico.com
Wed Apr 24 23:11:09 CEST 2019

I've got some legacy code where a timer is firing on the wrong thread. The sequence is:
1. Thread instantiates MyClass.
2. MyClass constructor calls QTimer::singleShot(60 * 1000, this, &MyClass::OnTimer);
3. Move class to thread by calling MyClass.moveToThread();
4. OnTimer is called on the wrong thread.

I assume because the constructor sets the timer before the class is moved to the thread, the timer is firing on the wrong thread. Obviously I can move the timer to a different function then call that after moveToThread() but is there a standard way of fixing this?

Tom Isaacson

More information about the Interest mailing list