Russian Qt Forum
Декабрь 19, 2018, 05:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаление потока  (Прочитано 650 раз)
Zusykss
Самовар
**
Offline Offline

Сообщений: 121


Просмотр профиля
« : Апрель 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();
« Последнее редактирование: Апрель 15, 2018, 16:31 от Zusykss » Записан
sergek
Программист
*****
Offline Offline

Сообщений: 589


Мы должны приносить пользу людям!


Просмотр профиля
« Ответ #1 : Апрель 15, 2018, 16:41 »

connect(parser.get(), &ParserInterface::finished, thread, &QThread::quit);
Записан

Qt 5.11.1 Qt Creator 4.7.2
Win7, Win10, Ubuntu 16.04
Zusykss
Самовар
**
Offline Offline

Сообщений: 121


Просмотр профиля
« Ответ #2 : Апрель 15, 2018, 17:40 »

Это не срабатывает
Записан
Zusykss
Самовар
**
Offline Offline

Сообщений: 121


Просмотр профиля
« Ответ #3 : Апрель 15, 2018, 20:06 »

Вопрос решен
С помощью указателя на объект !
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.155 секунд. Запросов: 22.