Akka.Interfaced.SlimSocket.Server.InterlockedCountFlag.Increment C# (CSharp) Метод

Increment() публичный Метод

public Increment ( ) : bool
Результат bool
        public bool Increment()
        {
            while (true)
            {
                var v = _value;
                if ((v & 1) == 1)
                    return false;
                var vNew = v + 2;
                if (Interlocked.CompareExchange(ref _value, vNew, v) == v)
                    return true;
            }
        }

Usage Example

        private void IssueReceive()
        {
            if (!_issueCountFlag.Increment())
            {
                return;
            }

            if (_receiveLargeBuffer == null)
            {
                _receiveArgs.SetBuffer(
                    _receiveLength,
                    _receiveBuffer.Length - _receiveLength);
            }
            else
            {
                _receiveArgs.SetBuffer(
                    0,
                    _receiveBuffer.Length);
            }

            try
            {
                if (!_socket.ReceiveAsync(_receiveArgs))
                {
                    OnReceiveComplete(_socket, _receiveArgs);
                }
            }
            catch (SocketException e)
            {
                HandleSocketError(e.SocketErrorCode);
            }
            catch (ObjectDisposedException)
            {
                HandleSocketError(SocketError.NotConnected);
            }
        }