Exemplo n.º 1
0
        /// <summary>
        ///     CancelBlocker a task :
        ///     remove a task from either To do or in progress
        /// </summary>
        /// <param name="task"></param>
        public void Cancel(SymuTask task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            if (!task.IsAssigned)
            {
                return;
            }

            var todo       = ToDo.Contains(task);
            var inProgress = InProgress.Contains(task);

            if (todo)
            {
                ToDo.Remove(task);
            }
            else if (inProgress)
            {
                InProgress.Remove(task);
            }
            else
            {
                return;
            }

            task.Cancel();
            if (_debug)
            {
                Cancelled.Add(task);
            }

            // We don't want to track message as Task
            if (task.Parent is Message)
            {
                return;
            }

            if (todo)
            {
                TaskResult.ToDo--;
            }
            else
            {
                TaskResult.InProgress--;
            }

            TaskResult.Cancelled++;
        }