/// <summary> /// Removes task from queue /// </summary> public void RemoveTaskFromQueue(Task task) { lock (_taskQueue) { if (_taskQueue.Remove(task)) { TaskRemovedFromQueue?.Invoke(this, new TaskEventArgs(task)); } } }
/// <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)); } } }