|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.05.2009, 19:16 | #1 |
Регистрация: 15.05.2009
Сообщений: 3
|
Последовательность выполнения процедур
Помогите решить проблему.
Есть 2-е процедуры. К примеру по нажатию кнопки 1 запускается процедура 1. Процедура выполняется долго к примеру 10 секунд. Если на 5-й секунде нажатием кнопки 2 запустить процедуру 2, процедура 1 останавливается, выполняется процедура 2, после чего продолжает выполняться процедура 1. Что можно придумать, не перенося процедуры в потоки, чтобы при нажатии кнопки 2, процедура 1 доработала до конца и только после этого исполнилась процедура 2? Одним словом необходимо чтобы процедуры ваполнялись до конца в порядке их вызовов. Простейший пример ниже. Код:
|
15.05.2009, 19:46 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
1.не использовать внутри этих процедур
application.processmessage; 2.при запуске процедуры блокировать возможность вызова других процедур buttonA.enable:=false; и разблокировать по окончании buttonA.enable:=true;
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 15.05.2009 в 19:49. |
15.05.2009, 20:02 | #3 | |
Регистрация: 15.05.2009
Сообщений: 3
|
Цитата:
2. процедуры в реальной задаче запускаются 3-мя способами: Кнопка/Таймер/По факту коннекта сокета. Эти события нельзя блокировать, нужно просто выполнять процедуры последовательно и до конца. |
|
15.05.2009, 20:08 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
ставить флаг занято
вести лог(очередь) запусков
программа — запись алгоритма на языке понятном транслятору
|
15.05.2009, 20:33 | #5 |
Регистрация: 15.05.2009
Сообщений: 3
|
К примеру ставлю флаг занято на время выполнения процедуры 1.
В начале процедуры 2 циклически проверяю флаг, но пока я проверяю флаг в процедуре 2 процедура 1 не работает и соответственно обе процедуры виснут навсегда. Я уже пробовал эксперементировать и с Event и с WeitableTimer результат пока тот же. Вероятно действительно придется заводить очередь и выполнять запросы последовательно по очереди. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Последовательность | CrazyRabbit | Помощь студентам | 14 | 08.02.2009 17:22 |
Паскаль, последовательность | Кагбе_Прогер | Помощь студентам | 2 | 22.12.2008 13:11 |
Последовательность событий | MAcK | Общие вопросы Delphi | 2 | 20.11.2008 14:36 |
последовательность | pakusya | Помощь студентам | 1 | 17.10.2008 17:33 |
числовая последовательность | pelsh | Помощь студентам | 1 | 15.02.2008 03:20 |