controller::controller(QObject* parent)
: QObject(parent)
{
qDebug() << "controller()"<< "thread:" << QThread::currentThreadId();
if(get_msxe3711_data_==nullptr)
{
get_msxe3711_data_=std::make_unique<get_msxe3711_data>();
//销毁方法1
// connect(thread_.get(), &QThread::finished, get_msxe3711_data_.get(), &QObject::deleteLater);
}
get_msxe3711_data_.get()->moveToThread(thread_.get());
thread_->start();
}
controller::~controller()
{
qDebug() << "controller()"<< "thread:" << QThread::currentThreadId();
//销毁方法2
thread_->quit();
thread_->wait();
}
1.connect(thread_.get(), &QThread::finished, get_msxe3711_data_.get(), &QObject::deleteLater);和
2.thread_->quit();
thread_->wait();
两种销毁方式只建议选择一种方式去销毁,在这里,我选择的是析构中销毁,
选择第一种,会出现这个错误,QThread: Destroyed while thread is still running
两个不能同时使用,同时使用会出现这个错误
pure virtual method called
terminate called without an active exception