2010-04-22 1 views
1

Я поддерживаю код другого пользователя и его класс UdpClient. Код объявляет один экземпляр UdpClient и непрерывно принимает данные, используя UdpClient.Receive().Прием и отправка UdpClient в то же время

Когда данные получены, они обрабатываются в другом потоке, а UdpClient снова вызывает Receive(). В то же время, когда данные обрабатываются, один и тот же клиент отправляет ответ обратно.

Вопрос: Это ошибка? Я так думаю, потому что UdpClient не является потокобезопасным, поэтому вы не можете одновременно вызвать два метода. Anyways код работает нормально, но ...

ответ

2

Тот факт, что что-то не является потокобезопасным, не означает, что вы не можете вызывать два метода через разные потоки (или даже один метод с помощью разных потоков), это просто означает что когда класс был спроектирован, он не был разработан с учетом безопасности потока, поэтому результаты одновременного доступа «непредсказуемы» из вашего POV.

Это не ошибка. Это неправильное использование.

+0

Значит, возможно, все работает удачей или, может быть, все работает, потому что методы приема и отправки не мешают друг другу, rigth? –

+0

Правильно, если вы отложите Бога. –

+0

Хорошо, я исправлю это неправильное использование. Я не хочу полагаться на Бога. Благодаря :) –