private MessageFromServerToClient HandleRequestForJob([NotNull] MessageFromClientToServer req) { if (OpenTasks.IsEmpty) { return(new MessageFromServerToClient(ServerResponseEnum.NothingToDo, req.TaskGuid)); } bool success = OpenTasks.TryDequeue(out var task); if (success) { SaveExecuteHelper.Get().SaveExecuteWithWait(() => ActiveTasks.Add(task)); task.Client = req.ClientName; task.ExecutionStart = DateTime.Now; var answer = new MessageFromServerToClient(ServerResponseEnum.ServeCalcJob, task.Guid); answer.HouseJobStr = File.ReadAllText(task.OriginalJsonFilePath ?? throw new DistSimException("Jsonpath was not found: " + task.OriginalJsonFilePath)); FileInfo fi = new FileInfo(task.OriginalJsonFilePath); answer.OriginalFileName = fi.Name; answer.LpgFiles = InitalizeLpgFiles(false); return(answer); } return(new MessageFromServerToClient(ServerResponseEnum.NothingToDo, req.TaskGuid)); }
void Activate(System.Type taskType) { if (!ActiveTasks.ContainsKey(taskType)) { ActiveTasks.Add(taskType, (T)tasks[taskType]); } }
public void ActivateAll() { ActiveTasks.Clear(); foreach (var task in tasks) { ActiveTasks.Add(task.Key, task.Value as T); } }
public void AddTask(Task task) { System.Type taskType = task.GetType(); if (tasks.ContainsKey(taskType)) { throw new System.Exception("The task list '" + this + "' already contains the task '" + task + "'"); } tasks.Add(taskType, task); ActiveTasks.Add(taskType, task as T); }
private void RunTask(ThreadTask task) { task.OnCompletedTask += Task_OnCompletedTask; task.OnErrorTask += Task_OnErrorTask; ActiveTasks.Add(task); QueuingTasks.Remove(task); var thread = new System.Threading.Thread(() => { System.Threading.Thread.Sleep(task.DelayMilliseconds); task.Run(); }); thread.Start(); OnStartedTask?.Invoke(this, new ThreadManagerScheduledTaskEventArgs(task)); }