![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 89
|
![]()
Здравствуйте.
не выходит создать псевдопараллелизм. Пытаюсь создать еще один поток в обработчике FormShow: Код:
Код:
Подскажите в чем косяк. Заранее благодарю. Последний раз редактировалось Unique_Maks; 21.10.2013 в 16:30. |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]()
а в чем все же ненормальность поведения приведенного кода?
в том что не показывается форма в потоке? так за показ той формы отвечает главный поток. А он занят (ему некогда) Цитата:
Код:
Цитата:
Так между ДВУМЯ нажатиями у главного потока найдется время и для показа всяких разных форм. в первом (приведенном) случае вы и запуск и остановку делаете в ОДНОЙ процедуре и система не получает возможностей по отображению. в другом (по нажатиям кнопок) запуск и остановка разнесены по разным процедурам, между которыми успевает поработать система по отображению окон(форм).
программа — запись алгоритма на языке понятном транслятору
|
||
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
А что вы сделать путаетесь? Нельзя создавать формы и т.д. не из VCL потока.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 89
|
![]()
Я считал, что после создания нового потока он будет работать параллельно (формально) основному и если система не загружена на 99%, то найдется время на обработку второго вместе с первым, но форма отображается, как Вы указали, на мгновение уже после долгой процедуры.
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 89
|
![]()
Пытаюсь создать форму ожидания долгих задач
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 21.10.2013 в 17:34. |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 89
|
![]()
он даже не получает ни каких данных во время выполнения долгой процедуры, дальше inherited не идет, только после завершения выполнения длительной операции начинает выполнять строки после inherited.
Как поступать в таких случаях? что посоветуете? |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]()
procedure Tmy_thread.Execute;
begin inherited; Synchronize(create_form); так сразу после inherited у вас стоит synchronize (ОЖИДАНИЕ свободного! основного потока). А он(основной поток) занят!! Вот и стоим ждем-с. Цитата:
алгоритм работы таков (должен быть). в основном потоке 1.создаем поток в остановленном состоянии 2.готовим данные (в т.ч. создаем показываем форму ожидания) 3.ПИШЕМ процедуру и задаем потоку OnTerminate (что делать когда поток закончит работу) например убрать форму!! примеры есть на форуме. 4.запускаем поток. В нем теперь нет ни одной Synchronize (мы их оставили в основной программе. Да и форма ему не нужна. Наоборот это форма которую мы показываем знает про поток и что ей делать когда поток остановится и как его остановить. Код:
точнее любой syncronize потока будет ждать любую "долгую" процедуру основного потока.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 22.10.2013 в 09:54. |
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 89
|
![]()
то же самое что и
Код:
Последний раз редактировалось Unique_Maks; 22.10.2013 в 13:13. |
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
Создали форму, поток, и сидим плюем в потолок пока он трудится. А форма ничего не делает. Только разве что следит за потоком Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 22.10.2013 в 13:48. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Потоки с++ | Алена_=))) | Помощь студентам | 0 | 26.12.2011 16:12 |
потоки | AlexMe | Общие вопросы Delphi | 3 | 18.07.2011 05:17 |
Потоки. | FieStik | Общие вопросы C/C++ | 4 | 23.05.2011 14:12 |
Потоки | Aleksey1989 | Помощь студентам | 2 | 27.10.2010 10:07 |
потоки | Владимир1988 | Помощь студентам | 0 | 08.02.2010 23:12 |