![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
New Delphi Coder
Форумчанин Подтвердите свой е-майл
Регистрация: 20.07.2008
Сообщений: 874
|
![]()
Доброго времени суток. Вот сижу и думаю, выполнив некую процедуру из нее вызываю ProcessMessage для того, что.s избежать зависания интерфейса... Но как реализовать остановку этой процедуры? Например, если она не сильно кретична и можно е прервать есть ли методы как из одной процедуры прервать выполняющуюся другую? Или же просто использовать переменную-маркер и если она становится ложна прервать процедуру изнутри?
p.s. Просто интересно как вы обрабатываете такие ситуации?
Страх это слабость и потому, кто испугался уже побежден.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
если честно то я использую потоки в таком случае
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 08.05.2009
Сообщений: 247
|
![]()
Ну я обычно такие процедуры которые нужно отменять вызываю в потоках, и вслучае если больше ненуждаюсь в работе этой процедуры то
убиваю поток, а в Вашем случае я б рекомендувал глобальную переменную типо: Код:
Мой сайт
Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
New Delphi Coder
Форумчанин Подтвердите свой е-майл
Регистрация: 20.07.2008
Сообщений: 874
|
![]()
В принципе уже дошел до этого, но переделывать неохото стало, и почему то не работал ADOQuery в потоке...
А кроме глобальной перемнной есть варианты? Это уже чисто ради интереса?
Страх это слабость и потому, кто испугался уже побежден.
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 28.09.2008
Сообщений: 344
|
![]() Цитата:
В первых двух случаях (если процедура не выполняется в длинном цикле) приложение и так должно перейти к обработке сообщений. ProcessMessage, как я понимаю хорошо использовать если у вас длительный код в виде цикла. Тогда на каждом проходе дать возможность приложению обработать сообщения (например нажатие кнопки), затем проверить глобальную переменную (выставленную перед началом цикла) как написал DarkEvil (можно вместо глобальной использовать поле формы Код:
(могу в чем-то ошибаться - давно не использовал ProcessMessage, предпочитаю потоки) |
|
![]() |
![]() |
![]() |
#6 |
New Delphi Coder
Форумчанин Подтвердите свой е-майл
Регистрация: 20.07.2008
Сообщений: 874
|
![]()
Да именно в цикле) Но мне самое интересное, можно ли из одной функции завершить(прервать) другую... Вот любопытно и все.
Страх это слабость и потому, кто испугался уже побежден.
|
![]() |
![]() |
![]() |
#8 |
New Delphi Coder
Форумчанин Подтвердите свой е-майл
Регистрация: 20.07.2008
Сообщений: 874
|
![]()
Это, если поток прерывать или изменить значение глобальной переменной, которая проверяется внутри первой функции и она сама себя прервет, а как ее принудительно прервать?)
Страх это слабость и потому, кто испугался уже побежден.
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 08.05.2009
Сообщений: 247
|
![]()
Что-то я нечего с ваших слов непонял
![]() вот вам пример: Код:
Мой сайт
Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 04.12.2008
Сообщений: 260
|
![]()
Ну так надо прописать в каком случаи Terminated будет тру и когда выходить. Т.е сейчас у Вас просто если Terminated = true тогда остановить цикл? А когда Terminated будет равняться правде та? Цикл та этого не знает...
Я бы изменил мир, но Бог не дает исходники...
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как создать в Дeлфи класс в DLL для использования его в VC++ | Dmitriy.Ch | Общие вопросы Delphi | 0 | 25.07.2009 08:40 |
Как отследить нажатие на ссылку, без использования JS | [Smarik] | PHP | 2 | 04.07.2009 15:27 |
Dblookupcombobox автоматическое заполнение в случае одного значения | 1sal1 | БД в Delphi | 1 | 07.10.2008 21:41 |
Как Firefox рассчитывает ширину столбцов вот в таком случае??? | Finer | HTML и CSS | 3 | 26.04.2008 16:47 |
Delphi, рекурсия, как сделать все возможные N-ки чисел (сколько столбцов такая N-ка,в данном случае 3)? | domik | Помощь студентам | 5 | 26.09.2007 16:43 |