【发布时间】:2012-03-07 19:12:15
【问题描述】:
我通过通常的异步回调从 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 已经被释放,当我尝试调用EndReceive() 时我得到一个ObjectDisposedException。我原以为只会得到一个空缓冲区。
处理这个问题的正确方法是什么? UdpClient 的某些成员在尝试使用它之前我可以检查,还是将其全部包装在 try{} 中并捕获 ObjectDisposedException 的唯一方法?对于正常的收盘来说,这似乎很糟糕。
【问题讨论】:
标签: c# asynchronous dispose udpclient