我正在使用如下的UDPClient

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


但是等待不会终止甚至不会抛出
尽管我设置了超时时间。这正常吗
行为?

最佳答案

在MSDN库中针对Socket.ReceiveTimeout的文章中明确提到了此问题:


获取或设置一个值,该值指定同步接收调用将超时之前的时间。


重点已添加。使用ReceiveAsync()时,您所做的与同步接收相反。解决方法是使用System.Timers.Timer,您在调用之前启动,然后在调用之后停止。关闭Elapsed事件处理程序中的套接字,以便ReceiveAsync()方法以ObjectDisposed异常终止。

09-17 04:47