Название: Удаление потока Отправлено: Zusykss от Апрель 15, 2018, 16:29 Добрый день, подскажите как удалить поток в случае, если я поток создаю в методе 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(); Название: Re: Удаление потока Отправлено: sergek от Апрель 15, 2018, 16:41 connect(parser.get(), &ParserInterface::finished, thread, &QThread::quit);
Название: Re: Удаление потока Отправлено: Zusykss от Апрель 15, 2018, 17:40 Это не срабатывает
Название: Re: Удаление потока Отправлено: Zusykss от Апрель 15, 2018, 20:06 Вопрос решен
С помощью указателя на объект ! |