Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как прибить поток и им же порожденные? [D6, Win2k]


Dinara ©   (2002-05-19 21:07:00) 

Нужно мгновенно. Простая посылка Terminate не подходит.


Александр Спелицин   (2002-05-20 11:24:00) [1]

Поток должен сам себя завершить. И лишь в крайнем случае, когда все способы перепробованы, его можно уничтожить вызвав TerminateThread.
Обо всех подводных камнях TerminateThread - в MSDN.


Digitman   (2002-05-20 08:30:00) [2]

простейшее решение - в методе потока Execute циклически проверяй состояние флаг Terminated, и в случае True прерывай цикл с последующим выходом из процедуры Execute.

более сложные (но более эффективные во многих случаях) решения могут использовать системные объекты синхронизации (mutex, semaphore и т.п.), а также станд.ф-ции посылки/приема сообщений (PostThreadmessage, PeekMessage, MsgWaitForMultipleObjects и т.д.)


Наверх

Титульная страница Поиск, карта сайта Написать письмо