示例#1
0
        private void InitArgs()
        {
            _receiveArgs.Clear();
            _sendArgs.Clear();
            _sendBuffMgr.FreeBuffer();
            _recBuffMgr.FreeBuffer();
            for (int i = 0; i < _maxConCount + _offsetNumber; i++)
            {
                SocketAsyncEventArgs senArg = new SocketAsyncEventArgs()
                {
                    DisconnectReuseSocket = true,
                    SocketError           = SocketError.NotInitialized
                };
                senArg.Completed += IOCompleted;
                senArg.UserToken  = new SocketToken(i);
                _sendArgs.Set(senArg);
                _sendBuffMgr.SetBuffer(senArg);

                SocketAsyncEventArgs recArg = new SocketAsyncEventArgs()
                {
                    DisconnectReuseSocket = true,
                    SocketError           = SocketError.SocketError
                };
                recArg.Completed += IOCompleted;
                SocketToken token = new SocketToken(i)
                {
                    arg = recArg
                };
                recArg.UserToken = token;
                _recBuffMgr.SetBuffer(recArg);
                _receiveArgs.Set(recArg);
            }
        }
        protected virtual void Dispose(bool isDisposing)
        {
            if (_isDisposed)
            {
                return;
            }
            if (isDisposing)
            {
                _sendArgs.Clear();
                if (_sendBuffMgr != null)
                {
                    _sendBuffMgr.Clear();
                    _sendBuffMgr.FreeBuffer();
                }

                _isDisposed = true;
                SafeClose();
            }
        }