Вы можете использовать QThread :: exec () для запуска потока в цикле событий.Поток будет работать до тех пор, пока вы не скажете вашему потоку выйти, вызвав QThread :: exit () .Таким образом, некоторый пример кода может выглядеть следующим образом:
void DownloadWorker::run()
{
DownloadManager* pDownloadManager = new DownloadManager(this);
connect(pDownloadManager, SIGNAL(finished()), SLOT(exit()));
connect(pDownloadManager, SIGNAL(error()), SLOT(exit()));
pDownloadManager->download();
exec();
}
Это гарантировало бы, что ваш поток не завершит работу до тех пор, пока не будет выдан сигнал "done ()" вашего DownloadManager.Здесь я привожу пример того, как решить вашу проблему, но я не знаю весь код вашего приложения.Это означает, что нет гарантии, что этот код является потокобезопасным и непротиворечивым.Вы должны позаботиться о мьютексах и всей правильной синхронизации самостоятельно.Будь очень осторожен !Работа с таким «низкоуровневым» API потока требует хорошего понимания многопоточности.
Надеюсь, что это поможет