| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Хочу создать Поток убиваемый через время |
| Автор: Denchik 10.5.2008, 21:43 | ||||
| Есть такой код в котором создается поток , потом мы должны его убить при любых обстоятельствах через какое-то время
помогите переделать вот такую функцию , расчитанную на аналогичную задачу , только запускающая внешнюю программу
|
| Автор: Albinos_x 10.5.2008, 23:40 |
| не лучше ли это делать в потоке? |
| Автор: MetalFan 11.5.2008, 21:33 |
| убивать поток(TThread в данном случае) не стоит, ибо приведет скорее всего к утечке ресурсов. лучше выставлять флаг (Terminate-Terminated) и его в самом потоке анализировать. |
| Автор: Denchik 12.5.2008, 21:50 | ||
Меня интересует что-то типа этого кусочка
То есть смысл убрать поток , если прошло какоето достаточно большое время после запуска потока |
| Автор: Beltar 13.5.2008, 10:12 |
| Что-то я не понял. Ты создаешь TThread, а в примере у тебя CreateProcess. Это разные вещи. Как тебе говорят просто мониторь в потоке Terminated по-другому его не убить. А так отработает Execute и конец потоку. |
| Автор: Denchik 13.5.2008, 11:48 |
| Пример с функцией для запуска программ и их завершением через таймаут Мне нужен для ситуаций когда поток виснет ( изредка бывает ) Получается нужно прикрутить WaitforSingleObject , чтобы он опрашивал поток А как мониторить поток ? с таймером ??? |
| Автор: MetalFan 13.5.2008, 13:12 |
код потока - твой? так что, отладить что там "виснет" чтоли нельзя? да, поток (в терминологии ОС) как и процесс убить можно. но тут(в случае с потоком) ты на 99% получишь утечку ресурсов (ибо в случае с процессом система сама почти весь "мусор" подчищает). если тебе это не критично, то убивай на здоровье - TerminateThread з.ы. вариант - сделать отдельный процесс(вместо потока) и мониторить его. будет более логичным имхо для избежания утечки ресурсов. |