关于Socket异步编程的一个问题
请各位看一看我这段程序,有什么问题。
线程启动Run函数 并把keep_Running设为true
rcv_buf_bytes = new bytes[4096];
rcv_buf_len =4096;
public void Run()
{
IAsyncResult ar = socket.BeginReceive(rcv_buf_bytes,0,rcv_buf_len,SocketFlags.None,new AsyncCallback(CallReceive),this);
}
CallReceive是这样的
private void CallReceive(IAsyncResult ar)
{
int recvBytes = socket.EndReceive(ar);
if(keep_Running)Run();
}
程序并不马上出错,而是执行一段时间后
int recvBytes = socket.EndReceive(ar);出错
错误是:未处理的“System.Net.Sockets.SocketException”类型的异常出现在 system.dll 中。
其他信息: 由于线程退出或应用程序请求,已放弃 I/O 操作。
请教各位大虾,这是什么原因?