Ejemplo n.º 1
0
 /// <summary>
 /// Add an action
 /// </summary>
 /// <param name="action"></param>
 /// <param name="name">Queue name or empty string for default</param>
 /// <returns>True if added, false if the queue is or has been disposed</returns>
 public bool Add(Func<Task> action, string name = "")
 {
     if (disposed || name == null)
     {
         return false;
     }
     SerialTaskQueueGroup group;
     lock (this)
     {
         if (!taskQueues.TryGetValue(name, out group))
         {
             taskQueues[name] = group = new SerialTaskQueueGroup();
         }
     }
     if (group.CancelToken.IsCancellationRequested)
     {
         return false;
     }
     group.Add(action);
     return true;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Clear all pending operations on task queues
        /// </summary>
        /// <param name="name">The queue to clear, empty string for default or null to clear all queues</param>
        public void Clear(string name = null)
        {
            SerialTaskQueueGroup[] groups;

            lock (this)
            {
                if (name == null)
                {
                    groups = taskQueues.Values.ToArray();
                }
                else if (taskQueues.TryGetValue(name, out SerialTaskQueueGroup _group))
                {
                    groups = new SerialTaskQueueGroup[] { _group };
                }
                else
                {
                    return;
                }
            }
            foreach (SerialTaskQueueGroup group in groups)
            {
                group.Clear();
            }
        }