public void AddEvent(EventQueueEntry entry) { lock (m_structLock) { m_eventQueue.AddLast(entry); NotifyAgent(); } }
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(); }
private void ProcessEntry() { EventQueueEntry entry = m_queue.GetEntryToProcess(); if (entry != null) { try { entry.runnable(); } finally { m_queue.RemoveEntryAndReleaseLock(entry); } } }