0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 4
1

Проблема с работой потока

22.09.2019, 20:56. Показов 1769. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер! Столкнулся с такой проблемой..

Пытаюсь разобраться как работают потоки в Qt... Создал класс ExTh, переопределил run(), в MainWindow тупо нажимаю на кнопку, и жду что будет выполняться код из run() в соседнем потоке, однако получаю ошибу:

QThread: Destroyed while thread is still running
Программа неожиданно завершилась.
Процесс был завершён принудительно.

Вот исходники:

C++ (Qt)
1
2
3
4
5
6
7
8
9
сlass ExTh : public QThread
{
public:
    explicit ExTh(QString threadName);
 
    void run();
private:
    QString name;
};
C++ (Qt)
1
2
3
4
5
6
7
void ExTh::run()
{
    for (int i = 0; i <= 1000; i++)
    {
//        qDebug() << name << " " << i;
    }
}

C++ (Qt)
1
2
3
4
5
6
void MainWindow::on_pushButton_clicked()
{
    ExTh theardA("theard A");
 
    theardA.start();
}
Почему оно не работает?)
Если я делаю что-то не так, то поправьте меня, пожалуйста
За ранее спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2019, 20:56
Ответы с готовыми решениями:

Трудности с работой потока
У меня вызывается поток с помощью функции _beginthreadex. При этом потоковая функция при вызове...

Проблема с работой БП
Купил новый БП ибо старый сгорел, купил на 450 Вт подключил его и запуская компьютер выявил...

Проблема с работой php
доброй ночи господа! Тема такая.Установил денвер протестировал на работу с php &lt;? php echo...

Проблема с работой видеоприложений
Всем добрый день! Проблема следующая: ноутбук(вполне себе современный), установлена W10, с самого...

2
278 / 87 / 37
Регистрация: 10.06.2015
Сообщений: 261
25.09.2019, 17:53 2
Цитата Сообщение от Maksim_1241342 Посмотреть сообщение
Почему оно не работает?)
Потому что, по завершению on_pushButton_clicked(), ExTh theardA, созданый на стеке, умирает в муках.

PS. По-моему, в документации уже давно просят не использовать так QThread (не переопределять run).
0
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
29.09.2019, 21:25 3
Цитата Сообщение от Lolobotik Посмотреть сообщение
в документации уже давно просят не использовать так QThread (не переопределять run).
И не только в ней, есть статьи на данную тему. Самый хороший способ - создать указатель объекта для работы в потоке, присвоить ему адрес объекта и потом поместить в поток методом moveToThread();
0
29.09.2019, 21:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2019, 21:25
Помогаю со студенческими работами здесь

Проблема с работой камеры
Сняли и проверили тестером камеру - картинка есть. При установке - работает какое-то время, затем...

Проблема с работой php
Доброй ночи господа! Тема такая.Установил денвер про тестировал его с рhр а php не отоброжается в...

Проблема с работой ОЗУ
Материнкая плата z97 pc mate процессор, i5 4460, оперативная память кингстон 2*4 gb 1333 ddr3...

проблема с работой компьютера
Здравствуйте, у меня вот такая проблема: значит купил я себе супер крутую игру &quot;Batelfield 3&quot; играл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru