1 つのワーカー スレッドを使用する単純なアプリケーションがあります。このワーカー スレッドが開始され、ネットからのファイルのダウンロードを担当する DownloadManager が初期化されます。私のメイン アプリケーション クラスでは、DownloadManager が終了する前に発行されるスレッドに finished() SIGNAL があります。
私の質問は、DownloadManager が作業を終了するまでワーカー スレッドを待機させる方法です。
コード例は次のとおりです。
class Main
{
m_DownloadWorker = new DownloadWorker(this);
QObject::connect(pm_hotosDownloadWorker, SIGNAL(finished()), this, SLOT(DownloadWorkerFinished()));
m_DownloadWorker->Execute();
// do i need to do here something so the thread will wait ?
.....
void Main::DownloadWorkerFinished()
{
Log("DownloadWorkerFinished");
}
};
class DownloadWorker : public QThread
{
void DownloadWorker::Execute()
{
// do i need to do here somthing so the thread will wait ?
start();
}
void DownloadWorker::run()
{
// do i need to do here somthing so the thread will wait ?
DownloadManager* pDownloadManager = new DownloadManager(this);
pDownloadManager->download();
}
};
class DownloadManager: public QObject
{
// downloading stuff using Qt networkmanager
.....
.....
}