/// <summary> /// Called when [work]. /// </summary> protected override void OnWork() { var messages = (MessageManagerInfo[])null; lock (_messageQueue) { messages = _messageQueue.ToArray(); } if (_messageQueue.Count == 0) { return; } foreach (var msg in messages) { if (_messageStates[msg.MessageId.GetHashCode()] == MessageState.Allow) { _workManager.ReceivedMQMessage(msg); } lock (_messageQueue) { _messageQueue.Remove(msg); } } }