![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прервать выполнения цикла [D6, WinXP]
jenbond © (2004-09-16 19:53:00)Мастера подскажите как можно прервать выполнения цикла нажатием на клавишу или каким-либо действием?
jenbond (2004-09-16 21:13:00) [1]Всем большое спасибо разобрался!
_student (2004-09-16 21:06:00) [2]Нет. Нужно создать экземпляр класса у которого есть метод Terminate
jenbond (2004-09-16 21:01:00) [3]Вот я создал класс
type
test = class(TThread)
private
Answer:integer;
protected
procedure Execute; override;
procedure GiveAnswer;
end;
Мне еще как-то нужно создать процедуру Terminate?
_student (2004-09-16 20:55:00) [4]MyThread.Terminate - остановка потока
jenbond (2004-09-16 20:52:00) [5]Так Terminate закрывает все приложение а мне нужно остановить только поток!
_student (2004-09-16 20:38:00) [6]Terminate не работает чтоли?
jenbond (2004-09-16 20:31:00) [7]Я уже создал дополнительный поток, запускаю его но не могу ни как найти метод коректного принудительного завершения.
Подскажите?
Anatoly Podgoretsky (2004-09-16 20:07:00) [8]Break
_student (2004-09-16 20:06:00) [9]Смотри
> Sergey Kaminski ©
Sergey Kaminski (2004-09-16 20:05:00) [10]Ну так в чем вопрос-то?
jenbond (2004-09-16 20:04:00) [11]Да в данном цикле выполняется большое количество операции и они забирают большое количество ресурсов в процессе выполнения данного цикла необходима возможность прерывания по нажатию на кнопку.
_student (2004-09-16 20:01:00) [12]
> jenbond
Конкретизируй вопрос
Sergey Kaminski (2004-09-16 20:00:00) [13]А если цикл затягивается надолго (т.е., там более-менее серьезные действия с точки зрения потребления ресурсов и времени), имеет смысл вынести его в отдельный поток(нить). Потом управлять действиями запущеной нити. Хотя бы через ту же глобальную переменную.
Sergey Kaminski (2004-09-16 19:56:00) [14]Да по-разному можно.
Например, завести глоб. переменную Boolean. В цикле поставитьApplication.ProcessMessagesи проверку значения переменной. В обработчике нажатия клавиши или экранной кнопки менять значение глобальной переменной. Все.