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

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

Как уничтожить все програмой запушеные Thread'ы?


Studentas ©   (2005-03-16 13:46:00) 

Доброго всем дня
Мож кто знает Как при закрытии проги уничтожить все програмой запушеные Thread'ы?


КаПиБаРа   (2005-03-16 15:15:00) [1]

Digitman ©   (16.03.05 14:49) [12]
А halt не поможет?


Studentas   (2005-03-16 15:10:00) [2]

А сразу про Terminateprocess() незя было?


Digitman   (2005-03-16 14:57:00) [3]


> КаПиБаРа ©   (16.03.05 14:54) [14]
> Я думал


думаютизвестно кто)


КаПиБаРа   (2005-03-16 14:54:00) [4]

Digitman ©   (16.03.05 14:49) [12]
Я думал что понимает.


DiamondShark   (2005-03-16 14:51:00) [5]


> Studentas   (16.03.05 14:45) [9]

Тогда смотри документацию к тому компоненту и ищи там описание корректного завершения.


Digitman   (2005-03-16 14:49:00) [6]


> КаПиБаРа ©   (16.03.05 14:47) [10]


видишь ли, автор в принципене понимает разницы между принудительным уничтожением трэда и его корректным завершением


Digitman   (2005-03-16 14:47:00) [7]


> Studentas   (16.03.05 14:45) [9]
> А как получить список фсех Thread'ов програмы


нахрен он тебе сдался ?


>  когда прогу вырубаю то процесс еше может несколько сек-мин
> жить
>
> Вот я и хочу их всех


"вырубай" свою "прогу" извне - вызовом Terminateprocess() .. и будет тебе счастье ..


КаПиБаРа   (2005-03-16 14:47:00) [8]

Digitman ©   (16.03.05 14:40) [8]
Да. Я предложил вариант для частного случая, когда потоки реагируют на FTerminated и необходимо выполнить, какие то действия  при завершении метода Execute, например подтвердить транзакцию.

В общем случае ответ был дан в [1] и [2].


Studentas   (2005-03-16 14:45:00) [9]

А как получить список фсех Thread'ов програмы

Дело в том что я использую компонент- тот создает кучу  Thread'ов а когда прогу вырубаю то процесс еше может несколько сек-мин жить

Вот я и хочу их всех


Digitman   (2005-03-16 14:40:00) [10]


> делай Terminate и WaitFor для всех потоков.


угу... а потокам, созданным Studentas'ом, монопенисуально состояние флага FTerminated ...


КаПиБаРа   (2005-03-16 14:32:00) [11]

Если нужно "по хорошему" завершить поток. То в onCloseQuery главной формы делай Terminate и WaitFor для всех потоков.


Digitman   (2005-03-16 14:21:00) [12]


> КаПиБаРа ©   (16.03.05 13:59) [4]


Мелкомягкая ОС знать ничего не знает ни о каких-то там
finally и иже с ней.

Мелкомягкая ОС просто УНИЧТОЖАЕТ трэд как ОС-объект.


Digitman   (2005-03-16 14:18:00) [13]


> Или я ошибаюсь?


не ошибаешься.


КаПиБаРа   (2005-03-16 13:59:00) [14]

Digitman ©   (16.03.05 13:52) [2]
Я точно не помню но вроде при завершении процесса треды прерываются так, что не выполняются команды после finally в методе Execute. Или я ошибаюсь?


КаПиБаРа   (2005-03-16 13:52:00) [15]

Studentas   (16.03.05 13:46)
А их координаты у тебя имеются?


Digitman   (2005-03-16 13:52:00) [16]


> при закрытии проги уничтожить все програмой запушеные Thread'ы


трэды процесса принадлежат этому процессу
нет процесса - нет и трэдов, т.е. процесс (так или иначе) завершился (уничтожен) - исчезли (уничтожены) и трэды, принадлежащие процессу


P.N.P.   (2005-03-16 13:49:00) [17]

Сами уничтожатся. При уничтожении процесса (твоей проги).


Наверх

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