Example #1
0
        /// <summary>
        /// 取出所有产品
        /// </summary>
        /// <returns></returns>
        private List <TProduct> DequeueAll()
        {
            lock (_productQueue.SyncRoot)
            {
                List <TProduct> result = new List <TProduct>();
                result.AddRange(_productQueue);

                // 清空队列
                _productQueue.Clear();

                // 清空信号量
                while (_cacheSemaphore.WaitOne(0))
                {
                    ;
                }

                return(result);
            }
        }