Socket异步操作引发
SocketAsyncEventArgs同一时间只能进行一个操作,通过Completed来确认当前操作是否完成,如果同步完成是不会触该事件需要自己手动调用处理。
如:Socket.ReceiveAsync(SocketAsyncEventArgs)、Socket.SendAsync(SocketAsyncEventArgs)为同步操作时不会引发SocketAsyncEventArgs.Completed,需要手动调用Completed的事件处理方法。
官方原话:
ReceiveAsync、SendAsync返回一个
Boolean
如果 I/O 操作挂起,则为 true。 操作完成时,将引发 e 参数的 Completed 事件。
如果 I/O 操作同步完成,则为 false。 在这种情况下,将不会引发 e 参数的 Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。
Socket.ReceiveAsync(SocketAsyncEventArgs) Method
Socket.SendAsync(SocketAsyncEventArgs) Method