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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
DEADHUNT
  опции профиля:
сообщение 28.12.2009, 21:57
Сообщение #2


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

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

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 28.12.2009, 21:08) *
Если нужно сделать именно метод в отдельном потоке смотри QtConcurent (QrRunable)

а чем QRunnable лучше QThread? его даже остановить нельзя.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 26.11.2024, 2:29