как создать новый qthread при каждом вызове функции и удалить старый при его завершении - PullRequest
0 голосов
/ 23 октября 2019

Привет, есть функция 1, при вызове которой генерируется сигнал, и создается новый поток. Часть connect в функции 1 соединяет излучаемый сигнал и открытый слот другого класса.

Поток, созданный в этой функции 1, должен быть уничтожен после завершения другого слота класса.

И при следующем вызове функции 1 должен быть создан новый поток и т. Д.

В настоящее время поток не уничтожается. Как это исправить, т.е. уничтожитьпоток после завершения слота.

Спасибо !!!

void EventListModel::vExtractNextItems()
{
    emit(fetch());

    t = new testthetimer();

    workerThread = new QThread();


    t->moveToThread(workerThread);

    connect(this, &EventListModel::fetch, t, &testthetimer::timeout);

    qInfo() << "Function 1 call "<< QThread::currentThread();
    workerThread->start();

}
void testthetimer::timeout()
{

    qInfo() << QDateTime::currentDateTime().toString() << " on " << QThread::currentThread();



        qInfo() << "total" << QThread::idealThreadCount();
        this->thread()->quit();
        this->thread()->destroyed();

        qInfo() << "running " << this->thread()->isRunning();
        qInfo() << QThread::currentThread();
}

и вывод


"Wed Oct 23 17:51:22 2019"  on  QThread(0x7ffe9c803970)
total 8
running  true
current thread is   QThread(0x7ffe9c803970)
Function 1 call  QThread(0x7ffe9b40efe0)
qml: DownScale
"Wed Oct 23 17:51:24 2019"  on  QThread(0x7ffe9b5de260)
total 8
running  true
current thread is   QThread(0x7ffe9b5de260)
Function 1 call  QThread(0x7ffe9b40efe0)

...