private void QueuePrioritisedMessage(IGMMessage message) { Monitor.Enter(prioritisedLock); PrioritisedQueue.Add(message); Monitor.Exit(prioritisedLock); RunPrioritisedProcess(); }
public void ProcessMessage(IGMMessage message) { if (message.Prioritised || string.IsNullOrWhiteSpace(message.GUID)) { QueuePrioritisedMessage(message); } else { QueueNormalMessage(message); } }
private void QueueNormalMessage(IGMMessage message) { var guid = message.GUID; if (!Queue.ContainsKey(guid)) { Queue.Add(guid, new List <IGMMessage>()); RunNormalProcess(guid); } Monitor.Enter(normalLock); Queue[guid].Add(message); Monitor.Exit(normalLock); }