コード例 #1
0
 public void AddEvent(EventQueueEntry entry)
 {
     lock (m_structLock)
     {
         m_eventQueue.AddLast(entry);
         NotifyAgent();
     }
 }
コード例 #2
0
        public void RemoveEntryAndReleaseLock(EventQueueEntry entry)
        {
            lock (m_structLock)
            {
                m_eventQueue.Remove(entry);
            }

            object tmpLock;

            if (m_locks.TryGetValue(entry.userToken, out tmpLock))
            {
                Monitor.Exit(tmpLock);
            }
            NotifyAgent();
        }
コード例 #3
0
        private void ProcessEntry()
        {
            EventQueueEntry entry = m_queue.GetEntryToProcess();

            if (entry != null)
            {
                try
                {
                    entry.runnable();
                }
                finally
                {
                    m_queue.RemoveEntryAndReleaseLock(entry);
                }
            }
        }