Ошибка остановки QTimer в многопоточном приложении

Я работаю над многопоточным приложением Qt. У меня рабочий класс и нить. В рабочем классе я создаю QTimer в стеке (не используя новый). Затем в основной класс я перехожу к рабочему потоку. Однако, когда я закрываю приложение, я получаю это сообщение:

QObject::killTimer: Timers cannot be stopped from another thread
QObject::~QObject: Timers cannot be stopped from another thread

Это мой код:

worker_ = new Worker();
worker_->moveToThread(&workerThread_);
Worker_->getTimer().moveToThread(&workerThread_);

Я также попытался объявить QTimer дочерним классом рабочего класса, но все равно получаю сообщение об ошибке:

QObject::killTimer: Timers cannot be stopped from another thread
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects 
owned by a different thread. Current thread 0x0x18c6c1b0. Receiver '' (of type 'MonitoringWorker') was created in thread 0x0x97fe90", file 
kernel\qcoreapplication.cpp, line 576

В этом случае у меня есть эта строка в рабочем конструкторе:

Worker::Worker() : timer_(this)

И я удалил эту строку:

Worker_->getTimer().moveToThread(&workerThread_);

Примечание: getTime возвращает ссылку на объект QTimer

Может кто-нибудь объяснить, что не так

заранее спасибо

РЕДАКТИРОВАТЬ: я решил мою проблему создания работника в стеке, а не в куче. Тогда я делаю QTimer рабочим классом, и он больше не жалуется

0 ответов

Другие вопросы по тегам