Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
1

Использование Abort

21.03.2019, 15:30. Показов 1135. Ответов 3

Author24 — интернет-сервис помощи студентам
Здравствуйте.
У меня в приложении несколько потоков, многие из которых могут оказаться в задержке (не обязательно Sleep, могут просто ждать ответа по сети, на пример). При завершении программы их все тоже надо завершить. Т.к. я не могу проверять надо ли завершиться, пока поток ждёт, то единственным выходом я вижу использование Abort. Хочу узнать, какие здесь могут быть подводные камни, а то много раз слышал, что такой способ убирания потоков не очень правильный?

P.S. На самом деле приходил ещё к алгоритму с заменой простой задержки на цикл, который повторяется нужное число раз в теле которого задержка на пол секунды и проверка, не пора ли завершиться потоку. Но по моему это трындец, да и при ожидании данных из сети не очень поможет.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2019, 15:30
Ответы с готовыми решениями:

Thread.Abort, небольшое недопонимание
Доброго времени суток. :senor: Довольно долго откладывал изучение потоков (и их использование)....

Почему поток не завершается через myThread.Abort?
Вопрос в следующем, создаю поток: myThread = new Thread(func); myThread.Start(); в func...

Как завершить текущий поток? Что-то вроде GetCurrentThread().Abort()
Нашел, что процесс убивается так: System.Diagnostics.Process.GetCurrentProcess().Kill(); Возможно...

ThreadAbortException- исключение, генерируемое при Abort; а где оно, собственно?
Да, где? ...Вот изучил многопоточность у Гербердта Шилдта. Он пишет (про прерывание потоков): В...

3
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
21.03.2019, 16:05 2
Цитата Сообщение от FaceHoof Посмотреть сообщение
единственным выходом я вижу использование Abort
Для потока устанавливайте background = true. Потоки будут завершаться корректно. Если речь об ожидании ответа по сети.
1
112 / 99 / 68
Регистрация: 21.04.2014
Сообщений: 1,403
21.03.2019, 16:24  [ТС] 3
Цитата Сообщение от PoPsa85 Посмотреть сообщение
Если речь об ожидании ответа по сети.
А если у меня там очень долгий Sleep?
0
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
21.03.2019, 16:37 4
Лучший ответ Сообщение было отмечено FaceHoof как решение

Решение

Цитата Сообщение от FaceHoof Посмотреть сообщение
А если у меня там очень долгий Sleep?
Не имеет значения.
Если у вас есть поток, который отслеживает некоторое действие, например подключение через сокет, установите для его свойства IsBackground значение true, чтобы этот поток не мешал завершить процесс. Microsoft
1
21.03.2019, 16:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2019, 16:37
Помогаю со студенческими работами здесь

"Ссылка на объект не указывает на экземпляр объекта" при вызове Abort
При вызове Abort() вываливается ошибка "Ссылка на объект не указывает на экземпляр объекта.". ...

Асинхронный вызов: Abort и Callback
Всем привет! Недавно начал разбираться с многопоточностью в .NET. 1) Мне нужно запустить...

Действия после Thread.Abort()
Как можно заставить поток выполнить некоторые действия после того как он получить команду Abort()?...

Метод Abort для потока крашит приложение
довольно странная проблема: при аборте потока студия завершает работу приложения, ничего не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru