| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Остановка потоков ThreadPool ? |
| Автор: gogzor 1.11.2008, 15:13 |
| Всем привет. У меня есть программа в которой используется класс ThreadPool , в нём работает масса потоков. Возможно ли както остановить потоки внутри ThreadPool? Потому что базовых методов я не нашёл.. Делать Thread.CurrentThread.Abort() для текущего потока тоже не получается... Как можно остановить всё это дело? |
| Автор: archeg 1.11.2008, 16:29 |
| Я так понимаю они и не должны останавливаться. Это же пул - они всегда должны быть открыты. Попробуй просто выйти из логики, внутри потока |
| Автор: gogzor 1.11.2008, 17:07 |
Не очень понял , если честно.. Можете пояснить? |
| Автор: archeg 1.11.2008, 21:07 | ||||
Ну типа что-то в потоке:
Тут бах - основной поток поставил needToWork = false, остановились. И про потокобезопасность не забываем.... З.Ы. Вообще проверил - у меня Abort() работает - так что можно и его попробовать. Почему у вас не работает - не знаю. Че пишет? Правда не знаю как пул ведет себя при аборте - надеюсь не уничтожает поток (тогда толку с пула?) Если не нравиться то что поток должен уничтожать сам себя - можно хранить ссылки на все потоки (к примеру при старте потока, он подписуеться, передавая екземпляр Thread.CurrentThread в основной поток по-скольку Queue не возвращает екземпляр потока) - потом можно управлять потоками с помощью списка ссылок Добавлено @ 21:11 Да, абортить плохо. Вот тут решение: http://msdn.microsoft.com/en-us/magazine/cc163644.aspx |