Потоки и метод Receive класса Udpclient
От: LKS2  
Дата: 10.09.04 09:07
Оценка:
В MSDNL указано что метоd Receive класса UdpClient
блокирует управления пока сообщение не примется (The Receive method blocks execution until a message is received).

В связи с чем вот такой вопрос:

Предположим, что по каким-то причинам(не буду на них останавливаться, но для примера разрыв сети) компьютер от которого я жду ответа не отвечает. У меня исполнение программы действительно останавливается на неопределенное время.

Если я вынесу это в отдельный поток, то Abort() не помогает, т.к. исполнение приостанавливается, т.е. я не могу обработать исключение от Abort().

Вопрос собственно вот в чем:

Как мне прервать ожидание в методе Receive(), или как убить поток?
Re: Потоки и метод Receive класса Udpclient
От: Banch  
Дата: 10.09.04 10:47
Оценка:
LKS>Как мне прервать ожидание в методе Receive(), или как убить поток?

придется перейти на асинхронную работу с сокетами (класс Socket)

06.10.04 15:05: Оставлено модератором в '.NET' — AndrewVK
Re[2]: Потоки и метод Receive класса Udpclient
От: LKS2  
Дата: 10.09.04 13:01
Оценка:
Здравствуйте, Banch, Вы писали:

LKS>>Как мне прервать ожидание в методе Receive(), или как убить поток?


B>придется перейти на асинхронную работу с сокетами (класс Socket)


Да этот способ мне известен, но...

Я несколько переформулирую вопрос:

Существуют ли вообще способ убить поток если есть что-то вроде метода Receive() (необязательно сетевое)
Re[2]: Потоки и метод Receive класса Udpclient
От: LKS2  
Дата: 10.09.04 13:04
Оценка:
Здравствуйте, Banch, Вы писали:

LKS>>Как мне прервать ожидание в методе Receive(), или как убить поток?


B>придется перейти на асинхронную работу с сокетами (класс Socket)


Да этот способ мне известен, но...

Я несколько переформулирую вопрос:

Существуют ли вообще способ убить поток если ввнутри его есть что-то вроде метода Receive() останавливающее поток исполнения(необязательно сетевое)
Re[3]: Потоки и метод Receive класса Udpclient
От: Banch  
Дата: 10.09.04 14:25
Оценка:
Здравствуйте, LKS2, Вы писали:

LKS> Существуют ли вообще способ убить поток если есть что-то вроде метода Receive() (необязательно сетевое)


к сожалению нет, это известная проблема, в Яве например прерывание потока вообще строго не рекомендуется
вот и МС на те же грабли наступает опять ....
Re: Потоки и метод Receive класса Udpclient
От: prVovik Россия  
Дата: 10.09.04 19:05
Оценка: +2
Здравствуйте, LKS2, Вы писали:

LKS> В MSDNL указано что метоd Receive класса UdpClient

LKS>блокирует управления пока сообщение не примется (The Receive method blocks execution until a message is received).

LKS>В связи с чем вот такой вопрос:


LKS>Предположим, что по каким-то причинам(не буду на них останавливаться, но для примера разрыв сети) компьютер от которого я жду ответа не отвечает. У меня исполнение программы действительно останавливается на неопределенное время.


LKS>Если я вынесу это в отдельный поток, то Abort() не помогает, т.к. исполнение приостанавливается, т.е. я не могу обработать исключение от Abort().


LKS> Вопрос собственно вот в чем:


LKS>Как мне прервать ожидание в методе Receive(), или как убить поток?


Попробуй просто закрыть сокет. Не знаю как в днете, а в обычных сокетах это работает
... << RSDN@Home 1.1.3 stable >>
лэт ми спик фром май харт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.