Пример #1
0
        public Semaphore(int initialCount, int maximumCount)
        {
            if (initialCount > maximumCount)
            {
                throw new ArgumentException("initialCount must be <= maximumCount");
            }
            if (maximumCount < 1)
            {
                throw new ArgumentOutOfRangeException("maximumCount", "maximumCount must be > 0");
            }
            if (initialCount < 0)
            {
                throw new ArgumentOutOfRangeException("initialCount", "initialCount must be >= 0");
            }

            m_currentCount = initialCount;
            m_maximumCount = maximumCount;

#if USE_FAST_EVENT
            m_gate = new FastEvent(true, m_currentCount > 0);
#else
            m_gate = new CEvent(true, m_currentCount > 0);
#endif
            waitObject = m_gate;
        }