Tôi có một lớp:Qt: qthread bị phá hủy khi chủ đề vẫn chạy trong đóng
class centralDataPool : public QObject
{
Q_OBJECT
public:
centralDataPool(QObject * parent = 0);
~centralDataPool();
commMonitor commOverWatch;
private:
QThread monitorThread;
int totalNum;
signals:
void createMonitor(int);
};
Trong constructor của nó tôi đã làm:
centralDataPool::centralDataPool(QObject* parent) : QObject(parent),totalNum(0)
{
connect(this, SIGNAL(createMonitor(int)), &commOverWatch, SLOT(createMonitor(int)));
commOverWatch.moveToThread(&monitorThread);
monitorThread.start();
}
khi tôi gọi destructor của lớp này tôi nhận được thông báo lỗi:
qthread destroyed while thread is still running
Nhưng khi tôi cố gắng chấm dứt màn hìnhThread in the destructor of class centralDataPool,
centralDataPool::~centralDataPool()
{
monitorThread.terminate();
}
Tôi bị rò rỉ bộ nhớ.
Cách chính xác để chấm dứt chuỗi trong khi hủy đối tượng chủ sở hữu của nó là gì?
đâu là mã destructor của bạn? –
@ ViníciusGobboA.deOliveira Xem các chỉnh sửa. – Nyaruko
Bạn không nên hoàn thành một chủ đề như thế này. Xem tài liệu: http://doc.qt.io/qt-5/qthread.html#terminate –