|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C++ Builder->Определение времени, необходимого для завершения процесса |
|
C++ Builder->Определение времени, необходимого для завершения процесса
|
Ветеран Сообщения: 878 |
Сорри за тупое название темы, в двух словах траблу не описать.
Есть форма, на которой происходит какой нить длительный процесс(в данном случае подгрузка а нимации и БД), необходимо отобразить TPRogressBar и показываьт на нем ход выполнения работы.. Собственно, как?! Как я понимаю надо юзать нити(потоки, Thread'ы), токо вот как конкретно?.. желательно с примерами... P.S. В Гугл и Поиск не посылать..... |
|
Отправлено: 10:13, 13-12-2004 |
Пользователь Сообщения: 84
|
Профиль | Отправить PM | Цитировать Вовсе не обязательно. При выполнении какого-нибудь цикла можно сделать так:
void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i=0;i<100000;i++) { ProgressBar1->Position = i; Application->ProcessMessages(); } } Если TThread, то достаточно создать наследный класс, скажем, TMyThread, в котором перекрыт абстрактный метод Execute, а также введен новый ShowMeth, который меняет значение ProgressBar. Где-нибудь в Execute необходимо вызвать метод Synchronize: Который обеспечит критическое выполение метода ShowMeth (критическая секция). |
Последний раз редактировалось Netscaper, 13-12-2004 в 20:25. Отправлено: 16:18, 13-12-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать Грейт сенькс....
![]() |
Отправлено: 17:35, 14-12-2004 | #3 |
Пользователь Сообщения: 84
|
Профиль | Отправить PM | Цитировать Море грейт плежерс
![]() |
Отправлено: 17:52, 14-12-2004 | #4 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать Есть очень длительный процесс(загрузка анимации и БД, к примеру). Нужно в TProgressBar показать прогресс выполнения этого процесса? Из этого следует вопрос - как можно орпеделить время необходимое на завершение процесса?
|
|
Отправлено: 12:21, 27-12-2004 | #5 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить 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); } |
Отправлено: 14:32, 18-01-2005 | #6 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Если известно сколько нужно сделать и сколько прошло времени, всё решается в пропорциях:
timeLeft = double(timeElapsed)*(work_to_do - work_done)/work_done |
Отправлено: 14:40, 18-01-2005 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Определение атрибута файла & проверка наличия процесса | user_123 | Скриптовые языки администрирования Windows | 10 | 19-11-2010 16:15 | |
Службы - [решено] Батник для Завершения сеанса | YDen | Скриптовые языки администрирования Windows | 5 | 28-09-2009 16:17 | |
Интерфейс - [решено] Абракадабры на окошках завершения работы и завершения сеанса | nvideo | Microsoft Windows 2000/XP | 2 | 26-02-2008 14:17 | |
Выбор простого и необходимого файрвола | kazarkin | Сетевые технологии | 9 | 22-12-2006 21:44 | |
Прерывание процесса завершения работы ПК | Greyman | Хочу все знать | 5 | 17-03-2004 06:14 |
|