![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как уничтожить все програмой запушеные 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]Сами уничтожатся. При уничтожении процесса (твоей проги).