Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Вниз

Метод Terminate в дополнительного потока   Найти похожие ветки 

 
Андрей Пл   (2007-08-29 15:08) [0]

У меня есть поток который в цикле что то делает скажите
всегда ли надо в цыкле проверять свойство Terminated потока завершения потока?
или достаточно в основной программе вызвать метод Terminate и поток сам завершиться?
Заранее спасибо.


 
Reindeer Moss Eater ©   (2007-08-29 15:10) [1]

А ты код посмотри. Что именно делает вызов Terminate. И сразу поймешь, завершится поток сам по себе или нет.


 
Сергей М. ©   (2007-08-29 15:18) [2]


> всегда ли надо в цыкле проверять свойство Terminated


Не всегда.
Но это вряд ли твой случай.


 
Юрий Зотов ©   (2007-08-29 15:30) [3]

> Андрей Пл   (29.08.07 15:08)  

Метод Terminate просто устанавливает свойство Terminated и больше ничего не делает. Остсюда вывод: если в основной программе вызвать метод Terminate, то поток сам по себе НЕ завершится. Нужно в методе Execute проверять свойство Terminated и если оно True, то выходить из метода. Это и будет завершением потока.


 
Андрей Пл   (2007-08-29 15:37) [4]

ясно надо ставить что то типа:
 while not Terminated do
 begin
    ...

 end;


если ошибаюсь поправте!!!

Еще вопрос в дополнительном потоке у меня идет работа с СОМ портом который был открыт из основной программы. При желании я хочу прекратить работу потока и закрыть порт. Вопрос как мне из основного потока узнать что поток уже завершился ведь в промежутке выполнения команд

 varThreardOpros.Terminate;
 KillComm;

поток может еще не завершиться т.е

может еще выполняться команды в цыкле

 while not Terminated do
 begin
    ... //т.е вот те команды что сдесь!!!

 end;


 
Reindeer Moss Eater ©   (2007-08-29 15:39) [5]

При выходе из Execute оповести главный поток и все.


 
Андрей Пл   (2007-08-29 15:39) [6]

т.е у меня возникает такая ситуация метод Terminate после него закрыл сразу порт процедурой KillComm а в цыкле доп. потока идет еще работа с портом!


 
Reindeer Moss Eater ©   (2007-08-29 15:41) [7]

Ну так прекращай ее и делай брейк из цикла


 
Anatoly Podgoretsky ©   (2007-08-29 15:41) [8]

> Андрей Пл  (29.08.2007 15:37:04)  [4]

if Terminated или перед/после выхода из цикла, порт желательно закрывать, а не расчитывать на систему.


 
Reindeer Moss Eater ©   (2007-08-29 15:43) [9]

Он его открыл в главном потоке. Лучше бы и закрывать там же.
Хотя конечно все равно.


 
Андрей Пл   (2007-08-29 15:43) [10]

>Reindeer Moss Eater ©   (29.08.07 15:39) [5]
>При выходе из Execute оповести главный поток и все.

ты имееш ввиду при помощи сообщений (ну это время вспоминать работу с ними)


 
Сергей М. ©   (2007-08-29 15:43) [11]

varThreardOpros.Terminate; //команда потоку закругляться по хозяйству
varThreardOpros.WaitFor; //ждем собственно закругления
KillComm; //теперь можно спокойно килить ресурс


 
Reindeer Moss Eater ©   (2007-08-29 15:44) [12]

ты имееш ввиду при помощи сообщений (ну это время вспоминать работу с ними)

Это уж от личных сексуальных пристрастий зависит.
Можно сообщениями, можно callback, можно по всякому....


 
Anatoly Podgoretsky ©   (2007-08-29 15:50) [13]

> Reindeer Moss Eater  (29.08.2007 15:43:09)  [9]

Для главного потока есть обработчик, вроде OnTerminate или как то подобно.


 
Андрей Пл   (2007-08-29 16:04) [14]

Всем спасибо

varThreardOpros.Terminate; //команда потоку закругляться по хозяйству
varThreardOpros.WaitFor; //ждем собственно закругления
KillComm; //теперь можно спокойно килить ресурс


то что было нкжно!!!


 
Сергей М. ©   (2007-08-29 16:05) [15]


> то что было нкжно


Только не вздумай при этом устанавливать св-во FreeOnTerminate = True - грабли получишь)


 
Германн ©   (2007-08-29 16:10) [16]


> Сергей М. ©   (29.08.07 16:05) [15]
>
>
> > то что было нкжно
>
>
> Только не вздумай при этом устанавливать св-во FreeOnTerminate
> = True - грабли получишь)
>

Тут и без этого на каждом шагу могут появиться грабли.


 
Сергей М. ©   (2007-08-29 16:12) [17]


> Германн ©   (29.08.07 16:10) [16]


Но эти грабли одни из самых больнобьющих)


 
evvcom ©   (2007-08-29 16:59) [18]


> ты имееш ввиду при помощи сообщений (ну это время вспоминать
> работу с ними)

Ну так хороший повод для того, чтобы заполнить пробел в твоей памяти :)

И в догонку опять же для заполнения пробела: слово "цикл" пишется через "и"



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.045 c
11-1177518640
vofk
2007-04-25 20:30
2007.11.18
Unicode, RichEdit


15-1192008332
terc
2007-10-10 13:25
2007.11.18
Пожалуйста нуна помощ по HTML


4-1178696117
AXEL65
2007-05-09 11:35
2007.11.18
Выгрузка dll из самой себя


11-1177003083
Vladimir Kladov
2007-04-19 21:18
2007.11.18
Casm2Basm


15-1192367870
Finder
2007-10-14 17:17
2007.11.18
Существует ли вообще - русификатор Delphi 2006?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский