crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QThread && QProcess
DEADHUNT
  опции профиля:
сообщение 28.12.2009, 21:03
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


class StreamReader : public QThread {
        SomeClass *someClass;
    protected:
        void run()
        {
            for (;; )
            {
                while (!someClass->process.canReadLine())
                    QThread::yieldCurrentThread();
                QString str = QString(someClass->process.readLine());
                qDebug() << "read stdout" << str;
             }
        }
    public:
        StreamReader(SomeClass *someClass);
};

class SomeClass {

StreamReader streamReader; // создаётся в конструкторе передаётся this

QProcess process;

void some_method()
{
    process.start(...);
    process.waitForStarted(INT_MAX);
    streamReader.start(); // Thread

    for (;; ) /* QApplication::processEvents() */;
};

если расскоментировать processEvents то сообщения от программы выводятся, а если нет то StreamReader ничего не считыват. в чём может быть проблема?

Сообщение отредактировал DEADHUNT - 28.12.2009, 21:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 28.12.2009, 21:08
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(DEADHUNT @ 29.12.2009, 0:03) *
someClass->gdbProcess.canReadLine()
у тебя получается, что в StreamReader ты вызываешь метод пренадлежащий классу из другого потока.

Если нужно сделать именно метод в отдельном потоке смотри QtConcurent (QrRunable)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 16:16