![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
N1VaL |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 17.3.2008 Репутация: нет Всего: нет |
есть три потока,
1 - Поток выполняет операцию, зацикливает (поток не когда не заканчивается) 2 - Поток тоже выполняет операции не когда не заканчивается Как мне сделать остановку потока пока выполняется другой поток то есть если начал выполняться 1 поток то второй на время остановить и наоборот прибывал Suspend() но чё то как то не всегда всё гладко проходит инигда вылетают ошибки и прога зависает... есть ещё третий поток который останавливает два предыдуших делает свои дела и возобнавляет их Вопрос в следующем Как правильно останавливать запускать потоки? в интернете не чего для себя толкового ненашёл, может чего не понял, заранее спасибо за ответы |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Ты чего-то не того хочешь ![]()
Используй thread pool.
А нахрена тогда вообще потоки? Если тебя устраивает поочередное выполнение, тогда зачем нужно создавать потоки? Это сообщение отредактировал(а) azesmcar - 20.4.2012, 09:35 |
||||||
|
|||||||
erm0l0v |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.1.2011 Репутация: нет Всего: 1 |
Как я понимаю вам требуется не потоки останавливать, а разрешать потокам доступ к каким либо ресурсам по очереди... Для этого в коже потоков выделите критичные секции и реализуйте синхронизацию. Способов реализовать синхронизацию много.
Самый простой использовать оператор lock, но лучше воспользоваться специальными механизмами например Mutex или AutoEvent. Останавливать поток из другого не хорошо, вы замучаетесь искать ошибки. |
|||
|
||||
N1VaL |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 17.3.2008 Репутация: нет Всего: нет |
ну тут как получается для чего мне нужны потоки
действия вроде как бы и поочерёдности выполняются но всё же паралельно Так как когда начинает выполнятся первый поток у него есть слип он засыпает на 20 минут потом продолжает В этот момент выполняется другой поток который время от времени то же засыпает, в этом и получается параллельность для этого я и стал использовать потоки в этих потоках грубо говоря происходит посыл данных на сервер, а третий поток проверяет всё ли нормально с интернетом, и если вдруг инет пропал он отключает потоки что бы они перестали посылку данных, и начинает коннеститься к инету связь восстанавливается и потоки включаются заново) Вот с остановкой потоков и их возобнавлением и возникли проблемы Это сообщение отредактировал(а) N1VaL - 20.4.2012, 19:36 |
|||
|
||||
erm0l0v |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.1.2011 Репутация: нет Всего: 1 |
А зачем 2 потока для работы с сервером? Есть причины по которым вы не можете сделать это в одном потоке?
Зачем 3 поток который проверяет подключение? отлавливайте ошибки подключения с помощью пинга а далле с помощью эксепшенов. Например перед отправкой данных пропинговали сервер, если подключение ест отправляете данные, если нет то например увеличиваете таймаут слипа, Пинг есть отправляете данные на сервер, если в момент отправки произошло исключение, значит поступаем так же как и в случае отсутствия пинга. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |