Dot-Net

等待 UDPClient.ReceiveAsync 超時

  • November 30, 2017

我正在使用如下所示的 UDPClient

dim c = New UDPClient(port)
client.CLient.ReceiveTimeout = 1
await client.ReceiveAsync()

但是,即使我設置了超時,等待也不會終止或拋出。這是正常行為嗎?

Socket.ReceiveTimeout 的 MSDN 庫文章中明確提到了它:

獲取或設置一個值,該值指定同步Receive 呼叫將超時的時間量。

重點補充。當您使用 ReceiveAsync() 時,您正在執行與同步接收相反的操作。解決方法是使用 System.Timers.Timer 在呼叫之前啟動並在之後停止。關閉 Elapsed 事件處理程序中的套接字,以便 ReceiveAsync() 方法以 ObjectDisposed 異常終止。

引用自:https://stackoverflow.com/questions/12638104