Beispiel #1
0
 private void QueuePrioritisedMessage(IGMMessage message)
 {
     Monitor.Enter(prioritisedLock);
     PrioritisedQueue.Add(message);
     Monitor.Exit(prioritisedLock);
     RunPrioritisedProcess();
 }
Beispiel #2
0
 public void ProcessMessage(IGMMessage message)
 {
     if (message.Prioritised || string.IsNullOrWhiteSpace(message.GUID))
     {
         QueuePrioritisedMessage(message);
     }
     else
     {
         QueueNormalMessage(message);
     }
 }
Beispiel #3
0
        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);
        }