我将尝试终止/取消一个QThread线程。我遵循了https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/中的实现方法。
我按照以下方式创建QThread线程:
我的问题是,在调用线程的 quit 后,线程仍在运行,即 API 的计算没有停止。因为工作线程只调用 API,所以我不能在工作线程循环中使用取消检查。有什么想法吗?
提前感谢!
我按照以下方式创建QThread线程:
workerThread = new QThread();
ImageProcessor* worker = new ImageProcessor();
worker->moveToThread(workerThread);
connect(workerThread, SIGNAL(started()), worker, SLOT(process()));
connect(worker, SIGNAL(finished()), workerThread, SLOT(quit()));
connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
connect(workerThread, SIGNAL(finished()), workerThread, SLOT(deleteLater()));
workerThread->start();
当触发某个 UI 事件时,尝试通过调用以下代码停止它:
workerThread->quit();
我的工人看起来像这样:
class ImageProcessor : public QObject
{
Q_OBJECT
public:
explicit ImageProcessor(QObject *parent = 0);
~ImageProcessor();
signals:
void finished();
public slots:
void process();
private:
//...
};
当进程调用一个需要进行大量计算的API时
void ImageProcessor::process()
{
// API call...
emit finished();
}
我的问题是,在调用线程的 quit 后,线程仍在运行,即 API 的计算没有停止。因为工作线程只调用 API,所以我不能在工作线程循环中使用取消检查。有什么想法吗?
提前感谢!