コード例 #1
0
 /// <summary>
 /// Removes task from queue
 /// </summary>
 public void RemoveTaskFromQueue(Task task)
 {
     lock (_taskQueue)
     {
         if (_taskQueue.Remove(task))
         {
             TaskRemovedFromQueue?.Invoke(this, new TaskEventArgs(task));
         }
     }
 }
コード例 #2
0
        /// <summary>
        /// Aborts task by mod id
        /// </summary>
        public void AbortTask(string modID)
        {
            lock (_taskQueue)
            {
                // Current task
                if (Task != null && Task.ModID == modID)
                {
                    AbortCurrentTask();
                }

                // Tasks in queue
                var enqueuedTasks = _taskQueue.Where(t => t.ModID == modID).ToArray();
                foreach (var task in enqueuedTasks)
                {
                    _taskQueue.Remove(task);
                    TaskRemovedFromQueue?.Invoke(this, new TaskEventArgs(task));
                }
            }
        }