internal bool ChangeState(MessageState from, MessageState to) { return Interlocked.CompareExchange(ref messageState, (int)to, (int)from) == (int)from; }