| 
 Название: Удаление потока
 Отправлено: 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
 
 Вопрос решен С помощью указателя на объект !
 
 
 |