Russian Qt Forum
Ноябрь 22, 2024, 18:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Потоки  (Прочитано 3565 раз)
sasha111
Гость
« : Декабрь 24, 2010, 08:52 »

Знаю что уже есть куча тем, но разобраться так и не смог

копирование файла на сервер,  пока он нескопируется программа наглухо виснет(


thread.h
Код
C++ (Qt)
#ifndef THREAD_H
#define THREAD_H
#include <mainwindow.h>
#define LIMIT 1000000
 
class Thread : public QThread
{
public:
 Thread();
 ~Thread();
 
 void setMessage(const QString &message);
 void run();
 void stop();
 
 
private:
 QString messageStr;
 volatile bool stopped;
};
 
 
#endif // THREAD_H



thread.cpp
Код
C++ (Qt)
Thread::Thread()
{
 stopped = false;
}
 
 
Thread::~Thread()
{
 
 QThread::wait();
}
 
 
 
 
void Thread::run()
{
 
   QString bbb = "C:/Qt/2010.04/maket-build-desktop/navicat9_lite_en.exe";
 
       QFile fileLayer(bbb);
qDebug() << "start!";
 
         fileLayer.copy("//192.168.155.1/ftp/navicat9_lite_en.exe");
 
 
       qDebug() << "stop!";
 
}
 
 
 
 
void Thread::stop()
{
   stopped = true;
 }


mainwindow.cpp
скопировал только вызов
Код
C++ (Qt)
void MainWindow::on_pushButton_clicked()
{
 
   Thread blo;
   blo.run();
}
 



Записан
BRE
Гость
« Ответ #1 : Декабрь 24, 2010, 08:54 »

Вообще, поток запускается методом start(), а run() это его тело.
Также wait в деструкторе нужно убрать и создавать объект Thread нужно на куче (через new), иначе он будет разрушаться при выходе из слота, в котором создавался.
« Последнее редактирование: Декабрь 24, 2010, 08:57 от BRE » Записан
sasha111
Гость
« Ответ #2 : Декабрь 24, 2010, 09:00 »

пардон, run() случайно еще вчера поставил, изменил на start()

убрал wait в деструкторе и теперь валиться ошибка QThread: Destroyed while thread is still running
Записан
alexman
Гость
« Ответ #3 : Декабрь 24, 2010, 09:18 »

Так по new то создаешь объект?
start можно вызывать с приоритетом QThread::Priority выполнения.
Записан
sasha111
Гость
« Ответ #4 : Декабрь 24, 2010, 09:21 »

теперь делаю new и не верею глазам, все работает
Спасибо)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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