Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Допустим, известна некоторая мера, показывающая сколько нужно сделать, например, кол-во файлов, байт, строк матрицы и т.д., алгоритм устроен циклом for(i=0; i<imax; i++), то можно сделать вставку типа
Код: Выделить весь код
// thread2:
class MyThread : SomeThreadClass {
     ...
public:
     static int op_to_do;
     static int op_done;
};

MyThread::execute(...)
{
     ...
     for(op_done=0; op_done<op_to_do; op_done++) {
            ...    
    }
}


// thread1:
void SomeGuiClass::onTimer()
{
       progressBar->setValue(op_done);
}
Допустим неизвестно даже примерно, сколько чего нужно сделать. Тогда действует обманка. Нужно показывать состояние по ассимптотически ограниченному закону, например:
Код: Выделить весь код
void SomeGuiClass::onTimer()
{
       // да простят меня пользователи
       progressBar->setValue(100 - 1./(1 + time_elapsed));
}

Отправлено: 14:32, 18-01-2005 | #6