我在代码中使用UDP来异步收发数据,但收发语句部分总是提示“无法访问已释放的对象”,请问这是什么原因?代码在下面,请朋友们帮我看看
private void Start()
{
IPEndPoint ep = new IPEndPoint(IPAddress.Any, channel.Port);
while (true)
{
if (!usingSocket)
{
lock (udp)
{
AsyncCallback callback = new AsyncCallback(ReceiveCallback);
udp.BeginReceive(callback, ep);
usingSocket = true;
}
}
Thread.Sleep(0);
}
}
/// <summary>
/// 接收数据的回调方法
/// </summary>
/// <param name="ar"></param>
private void ReceiveCallback(IAsyncResult ar)
{
lock (udp)
{
IPEndPoint ep = (IPEndPoint)ar.AsyncState;
SomeData data = SomeHelper.ReadBytes(udp.EndReceive(ar, ref ep));
usingSocket = false;
SaveData(data);
}
}