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)); }