我想知道创建QThread对象的正确方法,终止它并等待主线程中的终止。
我得到的问题是QThread的wait()方法没有返回true(我认为它有)并且一直阻塞直到超时到期。
我通过在工作线程中从run()方法返回之前调用quit()方法来暂时修复此问题,但我认为这不是正确的方法。
在QT文档中说如果线程已经完成,wait()应该返回true
(即从run()返回时)
我正在使用QT 5.9和Linux。
有没有人有这个问题?
MainWindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
# include
# include "Worker.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_btnStart_clicked();
void on_btnStop_clicked();
private:
Worker *ProcWorker;
QThread ProcessThread;
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
MainWindow.cpp