|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|||||||||||
Отображения на форме текстового сообщения с информацией о ходе расчета в отдельном потоке15.08.2014, 20:50. Показов 3446. Ответов 32
Метки нет (Все метки)
Делаю программу, которая занимается вычислениями. Вычислений много и если их не вынести в отдельный поток, то программа выглядит подвисшей, пока вычисления не закончатся. Ниже код в сокращенном виде.
0
|
|||||||||||
| 15.08.2014, 20:50 | |
|
Ответы с готовыми решениями:
32
TIdHTTP в отдельном потоке и прогресс бар на основной форме
|
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
| 15.08.2014, 22:35 [ТС] | |
|
На чистом проекте пробовал - действительно работает. Не пойму почему в текущем проекте не получается. Я перечислю особенности использования отдельного потока у меня, а вы посмотрите, может как раз причину найдете.
1. Экземпляр класса потока у меня создается вместе с приложением и является членом класса формы. Память освобождается при уничтожении формы. 2. Метод Execute() активируется нажатием на кнопку. За время работы программы метод Execute() можно вызвать любое количество раз. Там выполняются вычисления, которые зависят от исходных данных, задаваемых пользователем через элементы управления на форме. 3. Само вычисление и вызов функции Synchronize(NewCaption) находятся не в Execute(), а в отдельной расчетной функции (член класса потока), которая вызывается как раз из Execute(). Не знаю что еще могло бы мешать корректной работе программы.
0
|
|
|
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
|
|
| 16.08.2014, 01:42 | |
|
Нитонисе, зачем в процессе ProcessMessages ?
0
|
|
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
| 16.08.2014, 12:02 [ТС] | |
|
0
|
|
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
||
| 16.08.2014, 14:48 [ТС] | ||
|
0
|
||
|
Супер-модератор
|
||||||||||||||||
| 16.08.2014, 15:58 | ||||||||||||||||
Сообщение было отмечено Нитонисе как решение
Решение
Нитонисе, не надо вызывать метод Execute() напрямую, просто переведи поток из "спящего" состояния в рабочее через
А еще интереснее - вот так... Поток:
2
|
||||||||||||||||
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
||
| 16.08.2014, 16:29 [ТС] | ||
Спасибо за подсказку. А по поводу FSuspended - что-то мне не понравился способ. Ведь это фактически Execute() выполняется постоянно, только не входит в цикл, пока FSuspended = true.
0
|
||
|
Супер-модератор
|
|
| 16.08.2014, 17:27 | |
|
А ничего, что поток работает только до тех пор, пока выполняется Execute? На том все и построено. Закончился Execute - кирдык, поток завершен. Чтобы иметь возможность несколько раз выполнять действия, описанные в Execute, неоднократно, тебе в любом случае придется делать цикл.
0
|
|
|
|
|||||||
| 16.08.2014, 20:38 | |||||||
|
Добавлено через 1 минуту
0
|
|||||||
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
||
| 18.08.2014, 16:29 [ТС] | ||
|
0
|
||
|
Супер-модератор
|
|
| 18.08.2014, 17:13 | |
|
Ты ж не читаешь то, что тебе пишут. Так я просто не буду писать. Смысл в чем? Опять распинаться, объяснять что-то, чтобы ты опять сделал по-своему, а потом причитал, что "ничего не работает"? Я написал все в предыдущих двух постах. Умеешь читать - читай. Не умеешь - ничего, дворники тоже нужны.
0
|
|
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
| 18.08.2014, 20:06 [ТС] | |
|
Вы про FSuspended? Из вашего предыдущего поста не ясно, что замену Execute на Start нужно использовать совместно с FSuspended. Я так подумал, что это альтернатива или необязательное дополнение. Получается на поток извне я могу воздействовать только изменением FSuspended на false. То есть внутри потока постоянно идет проверка этого свойства. Неужели нет способа, когда поток был бы в режиме ожидания, без ежесекундных внутренних проверок, активировался строго по запросу?..
0
|
|
|
|
||
| 18.08.2014, 20:29 | ||
|
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||||
| 19.08.2014, 10:48 | ||||||||||
|
Не по теме:
И зачем FreeOnTerminate выставлено в false?
0
|
||||||||||
|
Супер-модератор
|
||
| 19.08.2014, 11:26 | ||
|
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 19.08.2014, 11:56 | |
|
0
|
|
|
|
|||
| 19.08.2014, 12:18 | |||
|
http://docwiki.embarcadero.com... .Suspended Добавлено через 17 минут
0
|
|||
|
Супер-модератор
|
||
| 19.08.2014, 12:19 | ||
|
Avazart, ты код читал? Или просто бегло просматривал?
0
|
||
| 19.08.2014, 12:19 | |
|
Помогаю со студенческими работами здесь
20
GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок? Класс в отдельном потоке QGraphicsScene в отдельном потоке Форма в отдельном потоке Запросы к БД в отдельном потоке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|