Добрый день, подскажите как удалить поток в случае, если я поток создаю в методе run()
Вот пример:
QThread * thread = new QThread();
std::unique_ptr<ParserInterface> parser;
switch (m_donor.m_type) {
case Donor::B_K_Selling:
parser.reset(new One(m_donor));
parser->moveToThread(thread);
break;
case Donor::K_B_Buying:
parser.reset(new Two(m_donor));
parser->moveToThread(thread);
break;
case Donor::G_K_Selling:
parser.reset(new Tree(m_donor));
parser->moveToThread(thread);
break;
default:
qWarning() << m_taskname << "Task type not set. Skip scan";
break;
}
connect(thread, &QThread::started, parser.get(), &ParserInterface::process);
connect(this, &ScanTask::stopAll, parser.get(), &ParserInterface::finishedThread, Qt::QueuedConnection);
connect(parser.get(), &ParserInterface::finished, thread, &QThread::quit);
connect(this, &ScanTask::stopAll, parser.get(), &ParserInterface::finished);
connect(parser.get(), &ParserInterface::finished, parser.get(), &ParserInterface::deleteLater);
connect(thread, &QThread::finished, thread, &QThread::deleteLater);
thread->start();
/*
Здесь большой кусок кода, и когда этот код завершается срабатывает сигнал
он должен остановить QThread * который создан с самого начала
*/
emit stopAll();