![]() |
|
![]() ![]() ![]() |
|
SerK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 31.3.2007 Репутация: нет Всего: нет |
Проблема такая:
При нажатии на Кнопку (выполняется фукнция обработки строк), все компоненты перестают реагировать пока функция не выполнится. А мне нужно выводить данные в Прогресс бар - как функция выполняется: какая строка обрабатывается, какая позиция искомого слова, время выполнения. Словом отображать весь ход работы функции. Как это реализовать? -------------------- Пусть будет миру хорошо! |
|||
|
||||
vol4ek |
|
|||
![]() конь в пальто ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
По нажатию кнопки создавайте отдельный поток и в нем ыыполняйте всю обработку строк.
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Можно и в одном потоке, главное - периодически очищать очередь сообщений. Например, после обновления данных в прогресс баре (через различные SendMessage) можно вызвать такую функцию:
Если нужна своевременная реакция на кнопку отмены, то данную функцию нужно периодически вызывать также во время длительных операций обработки данных. Тогда пользовательский интерфейс будет живым (реактивным на действия пользователя). Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Можно и в одном потоке, главное - периодически очищать очередь сообщений. Например, после обновления данных в прогресс баре (через различные SendMessage) можно вызвать такую функцию:
Если нужна своевременная реакция на кнопку отмены, то данную функцию нужно периодически вызывать также во время длительных операций обработки данных. Тогда пользовательский интерфейс будет живым (реактивным на действия пользователя). Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Можно и в одном потоке, главное - периодически очищать очередь сообщений. Например, после обновления данных в прогресс баре (через различные SendMessage) можно вызвать такую функцию:
Если нужна своевременная реакция на кнопку отмены, то данную функцию нужно периодически вызывать также во время длительных операций обработки данных. Тогда пользовательский интерфейс будет живым (реактивным на действия пользователя). Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Можно и в одном потоке, главное - периодически очищать очередь сообщений. Например, после обновления данных в прогресс баре (через различные SendMessage) можно вызвать такую функцию:
Если нужна своевременная реакция на кнопку отмены, то данную функцию нужно периодически вызывать также во время длительных операций обработки данных. Тогда пользовательский интерфейс будет живым (реактивным на действия пользователя). Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 1 Всего: 45 |
Можно и в одном потоке, главное - периодически очищать очередь сообщений. Например, после обновления данных в прогресс баре (через различные SendMessage) можно вызвать такую функцию:
Если нужна своевременная реакция на кнопку отмены, то данную функцию нужно периодически вызывать также во время длительных операций обработки данных. Тогда пользовательский интерфейс будет живым (реактивным на действия пользователя). Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
SerK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 31.3.2007 Репутация: нет Всего: нет |
Спасибо за ответ. Ещё вопрос: как вызывать эту функцию BOOL DialogMessageLoop( HWND dialog )? HWND dialog - что это? Добавлено через 1 минуту и 58 секунд
Спасибо за ответ. Создал поток, но это не повлияло на главную форму - она как была заторможенной во время выполнения функции, так и осталась. -------------------- Пусть будет миру хорошо! |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
В Builder'е есть специальный метод для такой обработки - Application->ProcessMessages();
В поток надо было вынести выполнение этой самой функции, а вы что туда поместили? |
|||
|
||||
SerK |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 31.3.2007 Репутация: нет Всего: нет |
Поместил в файл потока:
а вызов в файле главной формы:
Добавлено через 4 минуты и 19 секунд
Как им пользоваться в данном случае? Это сообщение отредактировал(а) SerK - 8.12.2016, 21:51 -------------------- Пусть будет миру хорошо! |
||||||||
|
|||||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
А где собственно вычисления? Если внутри MyT::Process, то это неправильно. Реальные вычисления должны вызываться вне метода Synchronize Периодически вызывать в процессе длительных вычислений. Интервал между вызовами напрямую влияет на 'отзывчивость' интерфейса |
|||
|
||||
SerK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 31.3.2007 Репутация: нет Всего: нет |
Вычисления вызываются вне метода Synchronize
Спасибо - разобрался с Application->ProcessMessages(); -------------------- Пусть будет миру хорошо! |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |