2010-04-22 101 views
1

我正在维护其他的代码及其使用类UdpClient。该代码声明了UdpClient的一个实例,并使用UdpClient.Receive()连续接收数据。UdpClient同时接收和发送

当收到数据时,会在另一个线程中处理它,并且UdpClient再次调用Receive()。在处理数据的同时,同一客户端正在发回响应。

问题:这是一个错误吗?我认为是因为UdpClient不是线程安全的,所以你不能同时调用两个方法。反正代码工作正常,但...

回答

2

某事不是线程安全的事实并不意味着你不能通过不同的线程调用两个方法(甚至通过不同的线程一个方法),它只是意味着当设计这个类时,并没有考虑到线程安全性,因此并发访问的结果对你的POV是“不可预知的”。

这不是一个错误。这是一个误用。

+0

所以这意味着,也许一切顺利运行,或者也许一切正常,因为接收和发送方法不会互相干扰,究竟是什么? – 2010-04-22 10:27:29

+0

对,如果你把上帝放在一边。 – 2010-04-22 10:38:16

+0

好吧,我要解决这个错误使用。我不想依靠上帝。谢谢 :) – 2010-04-22 10:41:59