2010-04-22 107 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