Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Запуск индикатора процесса   Найти похожие ветки 

 
_alex_   (2004-06-07 15:13) [0]

Добрый день!
У меня проблема, я запускаю функцию с математическим расчетом и хочу паралельно запустить индикатор процесса этого расчета. Как это лучше сделать?
Если в самой функции вызывать форму с индикатором, то после вызова метода ShowModal; работа функции приостанавливается и ожидается закрытие формы.


 
KSergey ©   (2004-06-07 15:15) [1]

Отдельный поток и модальная форма с индикатором
Общаться - через сообщения, например.


 
_alex_   (2004-06-07 15:47) [2]

Так вроде бы VCL компоненты не рекомендуется засовывать в потоки. Или у меня не верная информация?


 
Anatoly Podgoretsky ©   (2004-06-07 15:56) [3]

Перенеси расчет в форму с индикатором, это проще всего.


 
Erik1   (2004-06-07 16:11) [4]

"Так вроде бы VCL компоненты не рекомендуется засовывать в потоки" Можно и так сказать, если неполенишся то вынесеш расчет в отдельный клас, а с VCL будеш работать через Message. Незлоупотребляй syncronize! А лучше для начала вобще неиспользуй.


 
_alex_   (2004-06-07 16:34) [5]

А как это решается в комерческих приложениях? Ведь индикаторы процесса используются практически в каждой второй программе.


 
Digitman ©   (2004-06-07 16:47) [6]


> как это решается в комерческих приложениях? Ведь индикаторы
> процесса используются практически в каждой второй программе.


заметь - далеко не каждая коммерч.программа использует доп.код.потоки

но коль скоро возникла потребность в мод.форме и в расчете, выполняемом параллельно с кодом мод.формы, то доп.код.поток здесь, очевидно, - не самое худшее решение

осн.поток создает форму, получает ссылку на ее экз-р

далее осн.поток создает доп.поток. передавая ему параметром полученную ссылку на экз-р формы

далее осн.поток визуалилизирует модально созданную форму

созданный доп.поток выполняет циклические вычисления. в определенных итерациях которых он обращается к переданной ему параметром форме (точнее к виз.объекту на этой форме - прогресс-бару), изменяя нужное св-во .. эти обращения, разумеется д.б. синхронизированы с осн.потоком, например, с использованием метода TThread.Synchronize()


 
BFG9k   (2004-06-08 11:50) [7]

Это христоматийный пример. Именно он описан в книге В.В. Фаронова - Delphi4 УЧЕБНЫЙ (!) курс.


 
vox ©   (2004-06-08 14:55) [8]

Если время расчёта не очень большое (<1 минуты), то заморачиваться с потоками думаю не стоит. Просто покажи форму перед расчётом через visible (зачем ShowModal ???) и спрячь после. Делать модальную форму незачем - всё равно на время расчётов всё подвиснет.


 
_alex_   (2004-06-09 11:37) [9]

> Digitman ©   (07.06.04 16:47) [6]

Все таки хотелось бы создать что то универсальное, что бы можно было вставлять и в другие программы с минимальными переделками. Если использовать потоки, а если в функции будут задействованы VCL-компонет (у меня был такой пример) - опять получаются проблемы.
Может действительно не стоит использовать ShowModal, как посоветовал vox?
А если индикатор поместить в отдельное приложение общаться с ним используя, например события или сообщения?



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.139 c
1-1086334553
Yad
2004-06-04 11:35
2004.06.20
Code Explorer


14-1086333374
Baks
2004-06-04 11:16
2004.06.20
Из рубрики Знаменательная математика


14-1086173050
}|{yk
2004-06-02 14:44
2004.06.20
Что я нашел !!!


1-1086757998
artem_123
2004-06-09 09:13
2004.06.20
Как создать submenu в mainmenu программным путем


3-1085646446
AlexXn
2004-05-27 12:27
2004.06.20
BDE