예제 #1
0
        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;
            }
        }
예제 #2
0
 private void OnSend(object sender, SocketAsyncEventArgs args)
 {
     args.Completed -= OnSend;
     SocketAsyncEventArgsPool.Release(args);
 }