msdn上面说。。
如果 I/O 操作挂起,将返回 true。操作完成时,将引发 context 参数的 SocketAsyncEventArgs..::.Completed 事件。
如果 I/O 操作同步完成,将返回 false。将不会引发 context 参数的 SocketAsyncEventArgs..::.Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 context 对象以检索操作的结果。
有人说一般不会遇到此种问题,但数据量很大的情况下,经常会出现。。
每次一出现非异步的时候总会出现无限递归,导致堆栈溢出而退出。。我了个去。。我改了很长时间,包括加入异步线程池和改成循环来避免递归,但都造成慢慢拒绝连接了。
有没有人遇到此问题?
google上搜了,没见到解决问题的。。
http://www.askques.com/2437155/how-does-this-not-cause-a-stack-overflow
------解决思路----------------------
晕 上代码
别人写没有无限递归 你写有肯定是你的问题
------解决思路----------------------
最简单的方法,加一个ManualResetEvent,
在循环开始的时候 reset,
在complete或者收到连接后Set,
在AcceptAsync之后 WaitOne.
------解决思路----------------------
socket通信,网上完整例子很多,搜一个参考一下,不要自己靠拍脑袋想,靠这里抄一句那里抄一句的拼凑