private void OnComplete(object sender, SocketAsyncEventArgs e)
{
Action action;
switch (e.LastOperation)
{
case SocketAsyncOperation.Connect:
action = () => OnConnectComplete(e);
break;
case SocketAsyncOperation.Receive:
action = () => OnRecvComplete(e);
break;
case SocketAsyncOperation.Send:
action = () => OnSendComplete(e);
break;
case SocketAsyncOperation.Disconnect:
action = () => OnDisconnectComplete(e);
break;
case SocketAsyncOperation.Accept:
action = () => OnAcceptComplete(e);
break;
default:
throw new Exception($"socket error: {e.LastOperation}");
}
// 回调到主线程处理
this.poller.Add(action);
}