我通过通常的异步回调从 UdpClient 接收数据:
private void OnUdpData(IAsyncResult result)
{
byte[] data = _udpReceive.EndReceive(result, ref _receiveEndPoint);
//Snip doing stuff with data
_udpReceive.BeginReceive(OnUdpData, null);
}
当我Close()
在主线程中使用 UdpClient 时,回调会按我的预期触发,但此时_udpReceive
已经处理完毕,ObjectDisposedException
当我尝试调用EndReceive()
. 我期待得到一个空缓冲区。
处理这个问题的正确方法是什么?UdpClient
在尝试使用它之前,我是否可以检查一些成员,或者这是将其全部包装在 a 中try{}
并捕获的唯一方法ObjectDisposedException
?对于正常的收盘来说,这似乎很讨厌。