我有一個簡單的應用程序使用一個工作線程。 此工作線程已啓動並初始化DownloadManager,它負責從網上下載文件。 在我的主要應用程序類中,我已完成()SIGNAL在發送之前在DownloadManager完成的線程。如何讓QThread等到工作完成,然後完成?
我的問題是如何使工作線程等待,直到下載管理器完成其工作。
下面是示例代碼:
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
.....
.....
}
這很混亂。 1)pm_hotosDownloadWorker是什麼? 2)QObject :: connect(pm_hotosDownloadWorker,SIGNAL(finished()),this,SLOT(DownloadWorkerFinished()))是什麼?意思?在DownloadWorker :: start()中會發生什麼? 3)爲了弄清楚你是否需要做一些事情來讓線程等待,通過比較你的期望和實際發生的事情/文件說明應該發生的事情來測試你是否需要某些東西。 4)爲什麼有3個點要阻止執行? – 2011-04-10 09:20:56
1)我修好了它2)它只是打印按摩,線程完成3)... 4)我什麼線程將只完成從DownloadManager的下載完成 – user63898 2011-04-10 10:23:06