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

Тема в разделе "Delphi - Компоненты", создана пользователем ViToTiV, 19 май 2006.

Статус темы:
Закрыта.
  1. ViToTiV

    ViToTiV Гость

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

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

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    ну есть Suspend\ResumeThread, да только какой в этом смысл в твоем случае?
    Виноват, не понял вопрос сразу. Полагаю, правильный ответ - никак. Лучше запустить второй, а потом дождаться окончания первого. Потому как в твоем случае поток неверняка висит в системном вызове, и свернуть все что с этим связано - непросто.
     
  3. Barmutik

    Barmutik Гость

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

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

    orcommander Гость

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

    zubr Гость

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

    ViToTiV Гость

    Спаисбо, попробую останавливать главную функцию...
    А по поводу клика на табшите никто не подскажет? http://codeby.net/forum/threads/7733.html
     
  7. orcommander

    orcommander Гость

    Ну разумеется, именно по этому условие if должно быть в том месте, возле которого поток вертится. В принципе, если так критично, и нужно во что бы то ни стало, завершить поток сразу же после нажатия кнопки - можно поставить проверку хоть через каждую строчку, но... понятно, да?
     
  8. zubr

    zubr Гость

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

    orcommander Гость

    А, ну тогда уж... все зависит от конкретной задачи...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей