我有一个简单的应用程序使用一个工作线程。 此工作线程已启动并初始化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