private void Accept(SocketAsyncEventArgs args) { if (args == null) { args = SocketAsyncEventArgsPool.Acquire(); args.Completed += OnAccept; } else { args.AcceptSocket = null; } try { if (!Listener.AcceptAsync(args)) { OnAccept(this, args); } } catch (Exception ex) { args.Completed -= OnAccept; SocketAsyncEventArgsPool.Release(args); if (ex is ObjectDisposedException) { return; } if (ex is SocketException) { Log.outException(ex); return; } throw; } }
private void OnSend(object sender, SocketAsyncEventArgs args) { args.Completed -= OnSend; SocketAsyncEventArgsPool.Release(args); }