public void AddTask(TaskContainer command)
 {
     if (!executingTasks.TryAdd(command.TaskId, command))
     {
         throw new InvalidOperationException();
     }
 }
        public void Enqueue(TaskContainer task)
        {
            if (task == null)
            {
                throw new ArgumentNullException(nameof(task));
            }

            if (!queues.TryGetValue(task.TaskModel.GetType(), out TaskTypeQueue taskQueue))
            {
                throw new ArgumentException("Тип команды не поддерживается.", nameof(task));
            }

            taskQueue.Enqueue(task);

            System.Threading.Interlocked.Increment(ref count);
        }
        public bool TryDequeue(Type taskType, out TaskContainer task)
        {
            if (taskType == null)
            {
                throw new ArgumentNullException(nameof(taskType));
            }

            if (!queues.TryGetValue(taskType, out TaskTypeQueue commandQueue))
            {
                throw new ArgumentException("Тип задачи не поддерживается.", nameof(taskType));
            }

            if (!commandQueue.TryDequeue(out task))
            {
                return(false);
            }

            System.Threading.Interlocked.Decrement(ref count);

            return(true);
        }
 public bool TryDequeue(out TaskContainer taskContainer)
 {
     return(queue.TryDequeue(out taskContainer));
 }
 public void Enqueue(TaskContainer taskContainer)
 {
     queue.Enqueue(taskContainer);
 }
 public bool TryRemoveTask(Guid commandId, out TaskContainer command)
 {
     return(executingTasks.TryRemove(commandId, out command));
 }