Мгновенный перезапуск потока

  • Автор темы ViToTiV
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

ViToTiV

#1
Есть поток в котором выполняется обход компов на обнаружение отшареный ресурсов, подскажите как, например, по нажитии кнопки, остановить его и запустить заново? (я первый раз работаю с потоками, и не совсем разобрался :) ) Ведь если делать Terminate, то он ещё какоето время работает, а сразу остановить нельзя?

Упсь... не в ту ветку вопрос задал... я не чаянно :) Ответьте пожалуйсто :)
 

grigsoft

Well-known member
15.11.2005
735
0
#2
ну есть Suspend\ResumeThread, да только какой в этом смысл в твоем случае?
Виноват, не понял вопрос сразу. Полагаю, правильный ответ - никак. Лучше запустить второй, а потом дождаться окончания первого. Потому как в твоем случае поток неверняка висит в системном вызове, и свернуть все что с этим связано - непросто.
 
B

Barmutik

#3
Судя по тому что он делает он явно висит на сисмном вызове.. хотя по идее при обходе расщаренных ресурсов там нет ничего такого что может настолько зависнуть что нельзя было бы использовать Suspend\Resume ..

Приведите код как Вы делаете обход ...
 
O

orcommander

#4
Если не ошибаюсь, из потока можно безболезненно выйти, если перестанет работать его "мэйн" функция. Сделай так, что бы при нажатии кнопки, в эту функцию передалось значение, которое там сравнивалось бы через if и если оно равно тому, которое ты задал для выхода - функция завершается через return (0) например. :eek:
 
Z

zubr

#5
Для: orcommander
А что делать, если поток стоит на выполнении какой то функции (речь идет о таком случае)? Пока эта функция не завершится поток не выйдет на условие if.
 
O

orcommander

#7
А что делать, если поток стоит на выполнении какой то функции (речь идет о таком случае)? Пока эта функция не завершится поток не выйдет на условие if.
Ну разумеется, именно по этому условие if должно быть в том месте, возле которого поток вертится. В принципе, если так критично, и нужно во что бы то ни стало, завершить поток сразу же после нажатия кнопки - можно поставить проверку хоть через каждую строчку, но... понятно, да?
 
Z

zubr

#8
Блин, да речь идет о том, что выполнение какой то функции в потоке может быть длительным и толку что ты поставишь свое условие перед функцией и после функции - поток будет стоять на самой функции, теперь надеюсь, понятно?
 
O

orcommander

#9
А, ну тогда уж... все зависит от конкретной задачи...
 
Статус
Закрыто для дальнейших ответов.