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

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

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

Usage Example

        public void Close()
        {
            if (_issueCountFlag.Flag)
            {
                return;
            }

            if (_closeReason == 0)
            {
                _closeReason = 1;
            }

            if (_logger != null)
            {
                _logger.Trace("Close connection");
            }

            if (_socket != null)
            {
                _socket.Close();
            }

            if (_issueCountFlag.SetFlag())
            {
                ProcessClose();
            }
        }