![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите прием отладки св-ва Terminated у потока [D7, XP]
AV © (2012-05-02 17:35:00)procedure Thread.Execute;
repeat
Вся работа
until Terminated;
CanKillMe := True; // public-св-во, потом перебираю все потоки и кого можно убить - убиваю
Когда отлаживаешь, доходишь до Terminated, оно всегда равно False(т.к. не могу переключится в программу, которая устанавливает св-во Terminated в true).
т.е. надо изменить на True (из-под отладчика)
т.е. как бы сказать этому потоку Terminate
Юрий Зотов (2012-05-03 13:07:00) [1]
> AV © (03.05.12 10:06) [6]
Это не "ЮЗ посоветовал", это классики так советуют.
Да ведь и действительно: программа находится в каком-то состоянии, приходит символ, программа переходит в другое состояние (допустимое или нет). Конечный автомат в чистом виде.
AV (2012-05-03 10:06:00) [2]Отладилось!
Забыл inherited дописать в destractor одного класса :)
Здорово то как получается..
Никогда (наверное :)) не забуду, как ЮЗ посоветовал как-то аля машину состояний реализовать при анализе некоторого формального языка.
Мой случай :) Общаюсь с железками на их языке.
Особенно, если ответы приходят по сети в разное время от разных потоков(тем более, по сети, уже потоки id), машина состояний, короче, - "само то".
AV (2012-05-03 09:04:00) [3]Чем становлюсь старее, тем глупее :)
Потом уже придумал написать
until Terminated and B;
а локальную переменную уж поменять могу через менюшку debug.
А тут вообще можно и проперти, оказывается..
Спасибо.
Германн (2012-05-02 23:55:00) [4]В BreakPoint properties поставить условие Terminated = True
Cobalt (2012-05-02 23:07:00) [5]Анатолий, внимательнее:
> надо изменить на True ( из-под отладчика)
Anatoly Podgoretsky (2012-05-02 19:03:00) [6]> AV (02.05.2012 17:35:00) [0]
Terminated := True;
Cobalt (2012-05-02 18:38:00) [7]Нажимаешь Ctrl+F5 (или F7?)
набираешь self.Terminated, Enter
вводишь True, Enter