internal AsyncWorkItem NextWorkItem()
 {
     lock (_queue.SyncRoot)
     {
         if (_queue.Count == 0)
         {
             return(null);
         }
         AsyncWorkItem result = (AsyncWorkItem)_queue.Dequeue();
         if (_queue.Count == 0)
         {
             _hasPendingPost = false;
         }
         return(result);
     }
 }
        private void AddItem(AsyncWorkItem item)
        {
            bool flag = true;

            lock (_queue.SyncRoot)
            {
                if (Enabled)
                {
                    _queue.Enqueue(item);
                    if (!_hasPendingPost || !_isAsyncMode)
                    {
                        flag            = false;
                        _hasPendingPost = true;
                    }
                }
            }
            if (!flag)
            {
                OnWorkItemPending();
            }
        }