crossplatform.ru

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


  Ответ в Поток и sleep()
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
frefik Дата 4.6.2011, 13:28
  всё решилось, создал собственную функцию stop() и булеву переменную, по которой ведется основной цикл.
RazrFalcon Дата 3.6.2011, 12:09
  void QThread::terminate () [slot]

еще можно:
void QThread::quit () [slot]
и
void QThread::exit ( int returnCode = 0 )

Зависит от ситуации.
frefik Дата 3.6.2011, 10:59
  Привет всем. Как правильно и быстро остановить поток, если в нем используется функция sleep?


void ThreadPlay::run(QList<QTreeWidgetItem *> list)
{
    while(startStop){
        bool status;
        char *fileW;
        QByteArray appDefaultB;
        QString appDefault;
        QProcess process;

        int max = list.count();
        for(int i = 0; i < max; i++){
            if((list.at(i)->checkState(1) == Qt::Checked) && startStop){
                int repeat = list.at(i)->text(6).toInt();
                while(repeat != -1){
                    int saverMin = list.at(i)->text(4).toInt()*60;
                    if(saverMin != 0){
                        status = true;
                        emit saverStatus(status);
                        sleep(saverMin);
                        status = false;
                        emit saverStatus(status);
                    }
                    QString file = list.at(i)->text(7) + "\\" + list.at(i)->text(2);
                    QStringList arguments;
                    arguments.append(file);
                    arguments += list.at(i)->text(5).split(" ");
                    fileW = file.toLocal8Bit().data();
                    appDefaultB.resize(1024*32);
                    FindExecutableA(fileW, NULL, appDefaultB.data());
                    appDefault = appDefaultB;
                    process.start(appDefault, arguments);
                    QTime duration;
                    QTime durationSec;
                    duration = duration.fromString(list.at(i)->text(3), "hh:mm:ss");
                    sleep(durationSec.secsTo(duration));
                    process.close();
                    repeat--;

               }
            }
        }
    }
    exec();
}
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 0:39