コード例 #1
0
 private void FindNextTask_NeedsLock(out Task targetTask, out QueuedTaskScheduler.QueuedTaskSchedulerQueue queueForTargetTask)
 {
     targetTask         = null;
     queueForTargetTask = null;
     foreach (KeyValuePair <int, QueuedTaskScheduler.QueueGroup> _queueGroup in this._queueGroups)
     {
         QueuedTaskScheduler.QueueGroup value = _queueGroup.Value;
         foreach (int num in value.CreateSearchOrder())
         {
             queueForTargetTask = value[num];
             Queue <Task> tasks = queueForTargetTask._workItems;
             if (tasks.Count <= 0)
             {
                 continue;
             }
             targetTask = tasks.Dequeue();
             if (queueForTargetTask._disposed && tasks.Count == 0)
             {
                 this.RemoveQueue_NeedsLock(queueForTargetTask);
             }
             value.NextQueueIndex = (value.NextQueueIndex + 1) % _queueGroup.Value.Count;
             return;
         }
     }
 }