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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как правильно запускать несколько потоков  (Прочитано 2702 раз)
GamBitiK
Гость
« : Октябрь 21, 2014, 22:03 »

как их запустить 2шт и паралельно,отдельно коментирую каждую строчку и они запускаются а последовательных запуск,не работает
myservice.cpp
#include "myservice.h"
#include "mythread.h"
#include "metka.h"

MyService::MyService(int argc, char **argv):QtService<QCoreApplication>(argc,argv,"MyService")
{
    try{
        //Set the service information
        setServiceDescription("Служба для обработки электронных СМИ");
        setServiceFlags(QtServiceBase::CanBeSuspended);
    }
    catch(...){
        qCritical() << "Error in CONSTRUCTOR";
    }
}

MyService::~MyService()
{
    try{
        //RELEASE memory

    }
    catch(...){
        qCritical() << "Error in DESTRUCTOR";
    }
}

void MyService::start()
{
    try{
        QCoreApplication *app = application();
        qDebug() << "Service started";
        qDebug() << app->applicationFilePath();
        Thr = new MyThread;
     
      /*  Met=new Metka;

        qDebug()<<"1";
       Thr->run();
       qDebug()<<"2";
       Met->run();*/

     //    Thr->moveToThread(proc);
       //  proc->start();

    /*   QThread* thread = new QThread;
         Metka* reader = new Metka;
        reader->moveToThread(thread);
        QThread* thread1 = new QThread;
        MyThread* reade = new MyThread;
        reade->moveToThread(thread1);

        QThread *thread = new QThread();
         MyThread *tr = new MyThread;
        tr->moveToThread(thread);
        thread->start();

*/


     //   Met=new Metka;
       // Met->run();
        //MyClass.DoSomething
    }
    catch(...){
        qCritical() << "Error in START";
    }
}

void MyService::pause()
{
    try{
        qDebug() << "Service paused";
        Thr->stop();
    }
    catch(...){
        qCritical() << "Error in PAUSE";
    }
}

void MyService::resume()
{
    try{
       qDebug() << "Service resume";
       Thr->start();
    }
    catch(...){
        qCritical() << "Error in RESUME";
    }
}

void MyService::stop()
{
    try{
       qDebug() << "Service stoped";
       Thr->terminate();
       delete Thr;
    }
    catch(...){
        qCritical() << "Error in STOP";
    }
}
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #1 : Октябрь 21, 2014, 22:06 »

Нитки запускаются методом start, а не run.
Записан
GamBitiK
Гость
« Ответ #2 : Октябрь 21, 2014, 22:15 »

Код:
MyThread::MyThread()
{
    stopped = false;
    connect (&manager, SIGNAL(finished(QNetworkReply*)),this,
             SLOT(replyFinished(QNetworkReply*)));

}


void MyThread::run()
{

    Bdconnect();
    stopped = false;
    while (!stopped){



      GetUrl();


// sleep(10);

    }
}
он же вызывает run или куда то выше нужно идти,расталкуйте
заголовочник
Код:
#include <QDebug>
#include <qtservice.h>
#include "mythread.h"
#include<metka.h>
#include<QFile>

class MyService:public QtService<QCoreApplication>
{
public:
    MyService(int argc, char **argv);
    ~MyService();

    void start();


    void pause();


    void resume();


    void stop();

    MyThread *Thr;

    Metka *Met;

private:
};

#endif // MYSERVICE_H
« Последнее редактирование: Октябрь 21, 2014, 23:37 от GamBitiK » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Октябрь 21, 2014, 23:12 »

GamBitiK, помещайте код в тег code (кнопка с решеткой на редакторе сообщений / выпадающий список ниже кнопки форматирования "Жирный").
Записан

GamBitiK
Гость
« Ответ #4 : Октябрь 22, 2014, 13:06 »

Подскажите пожалуйста
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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