//更新所有 public static void UpdateAll(int time) { if (time < _time) { return; } _time = time; _last_u = null; _last_t = null; _cur_u = null; _cur_t = null; var Array = _global_run_list.ToArray(); for (int i = 0; i < Array.Length; ++i) { var _curTask = Array[i]; if (_curTask == null) { _global_run_list.Remove(_curTask); continue; } try { _curTask.Update(); } catch (System.Exception err) { Log.Error($"Mytask.UpdateAll,task:{_curTask.name} error:{err.Message},{err.StackTrace}"); } } }
void _Interrupt(CanInterruptHandler handler) { var count = _stack.Count; if (count == 0) { return; } // 查找 n, 使得 [0, n) 之间的 TaskUnit 可以被停止 int n = 0; for (n = 0; n < count; n++) { var u = _stack[n]; var can_interrupt = handler(u.data); if (!can_interrupt) { break; } } // 删除 [0, n) 之间的 TaskUnit if (n > 0) { TaskUnit[] arr = new TaskUnit[n]; _stack.CopyTo(0, arr, 0, n); _stack.RemoveRange(0, n); foreach (var u in arr) { u.InvokeLeave(); } } }
public async Task <TaskUnit> SaveTaskUnitAsync(TaskUnit taskUnit) { _context.Tasks.Add(taskUnit); await _context.SaveChangesAsync(); return(taskUnit); }
public async Task UpdateAsync(TaskUnit taskUnit) { var target = dbContext.TaskUnits.Single(x => x.TaskUnitId == taskUnit.TaskUnitId); target = taskUnit; await dbContext.SaveChangesAsync(); }
public async Task EditTaskUnitAsync(TaskUnitDTO editTaskUnit) { TaskUnit taskUnit = _mapper.Map <TaskUnitDTO, TaskUnit>(editTaskUnit); await _assignedUserTaskUnitService.DeleteAllAssignedUsersForTaskUnit(taskUnit.TaskUnitId); TaskUnit taskUnitInDb = await _taskUnitRepository.GetTaskUnitByIdAsync(taskUnit.TaskUnitId); var assignedUsers = editTaskUnit.AssignedUsers; if (assignedUsers != null) { for (int i = 0; i < assignedUsers.Count(); i++) { int assignedUserId = Int32.Parse(assignedUsers.ElementAt(i)); AssignedUser assignedUser = await _assignedUserService.GetAssignedUserByIdAsync(assignedUserId); AssignedUserTaskUnit assignedUserTaskUnit = new AssignedUserTaskUnit { AssignedUserId = assignedUser.AssignedUserId, TaskUnitId = taskUnitInDb.TaskUnitId }; await _assignedUserTaskUnitService.AddAssignedUserTaskUnit(assignedUserTaskUnit); } } await _taskUnitRepository.EditTaskUnitAsync(taskUnit); }
public async Task <TaskUnitDTO> SaveTaskUnitAsync(TaskUnitDTO taskUnitDto) { TaskUnit taskUnit = _mapper.Map <TaskUnitDTO, TaskUnit>(taskUnitDto); TaskUnitDTO taskUnitD = _mapper.Map <TaskUnit, TaskUnitDTO>(await _taskUnitRepository.SaveTaskUnitAsync(taskUnit)); var assignedUsers = taskUnitDto.AssignedUsers; if (assignedUsers != null) { for (int i = 0; i < assignedUsers.Count(); i++) { int assignedUserId = Int32.Parse(assignedUsers.ElementAt(i)); AssignedUser assignedUser = await _assignedUserService.GetAssignedUserByIdAsync(assignedUserId); AssignedUserTaskUnit assignedUserTaskUnit = new AssignedUserTaskUnit { AssignedUser = assignedUser, TaskUnit = taskUnit }; await _assignedUserTaskUnitService.AddAssignedUserTaskUnit(assignedUserTaskUnit); } } return(taskUnitDto); }
// 调用一个指函数 e, 等它结束后再返回自己 // 注意: 一定要用 yield return Task.Call 方式调用, 否则执行结果不可预测 public static int Call(IEnumerator e) { if (++_calls > 1000) { throw new Exception("检测到死循环!"); } var stack = _cur_t._stack; // 清空返回值 if (stack.Count > 0) { var u = stack[0]; u.ret_msg = null; u.ret_val = null; } // 添加任务 { var u = new TaskUnit() { e = e }; stack.Insert(0, u); // 添加到头部 } // 执行一次 _cur_t.Update(); --_calls; return(0); }
public async Task <TaskUnit> CreateAsync(TaskUnit newTaskUnit) { await dbContext.TaskUnits.AddAsync(newTaskUnit); await dbContext.SaveChangesAsync(); return(newTaskUnit); }
public async Task <bool> PutTest(TaskUnit taskUnit) { var userId = await userService.GetUserIdAsync(User.Identity.Name); var a = await taskUnitService.UpdateOneFieldAsync (x => x.TaskUnitId == taskUnit.TaskUnitId && x.UserId == userId, y => y.UserMemoText = "aaaaa"); return(true); }
/// <summary> /// 调用一个指定函数,等它结束后再返回执行自己 /// 注意:一定要使用yield return Task.Call,否则结果不可预测 /// </summary> /// <param name="e"></param> /// <returns></returns> public static int Call(IEnumerator e) { var u = new TaskUnit() { e = e }; _cur_t._stack.Insert(0, u); _cur_t.Update(); return(0); }
//取消 private void btnCancel_Click(object sender, EventArgs e) { if (_TaskUnit.TaskConfig.ExtractionRules == null || _TaskUnit.TaskConfig.ExtractionRules.Count == 0 || _TaskUnit.TaskConfig.UrlListManager.NavigationRules == null || _TaskUnit.TaskConfig.UrlListManager.NavigationRules.Count == 0) { _TaskUnit = null; } this.Close(); this.Dispose(); }
//добавление задачи в очередь private void EnqueueTask(Task task, Priority priority) { lock (threadQueueLock) { TaskUnit taskUnit = new TaskUnit(task, priority); taskQueue.Add(taskUnit); Console.WriteLine("добавлена задача приоритета: " + priority); } lock (threadTaskLock) { Monitor.Pulse(threadTaskLock); } }
private void btnScan_Click(object sender, RoutedEventArgs e) { TaskUnit api = new TaskUnit(tbHost.Text.Trim(), uint.Parse(tbPort.Text.Trim())); api.NewTask(tbTaskUrl.Text.Trim()); api.StartGetDBTableColumnCount(); while (!api.CheckTaskFinied()) { Thread.Sleep(1000); } var data = api.GetTaskData(); var targetInfo = api.ReadAllFromTaskData(data); tbResult.Text = Newtonsoft.Json.JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented); }
private void ThreadAction() { Console.WriteLine("ThreadAction. Go."); lock (threadTaskLock) { while (true) { Monitor.Wait(threadTaskLock); lock (threadQueueLock) { if (!taskQueue.Any()) { lock (threadStoperLock) { if (IsStopped) { poolStoppedGate.Set(); return; } } Console.WriteLine("Задач нет. Ждем новых"); continue; } } TaskUnit newTask = DequeueTask(); newTask.Task.Execute(); Console.WriteLine("Выполнена задача приоритета: " + newTask.Priority, ConsoleColor.Blue); lock (threadQueueLock) { lock (threadStoperLock) { if (IsStopped && !taskQueue.Any()) { Console.WriteLine("Нет задач в очереди. Выход из потока."); // Сигнализировать об окончании выполнения последней задачи. poolStoppedGate.Set(); return; } } } } } }
//private List<Replacement> _Replacement = new List<Replacement>(); //private List<HtmlMark> _htmlMakes = new List<HtmlMark>(); #endregion public FrmTask(TaskUnit taskUnit) { InitializeComponent(); SerializerHtmlMaker(); this._TaskUnit = taskUnit; //保存任务配置信息 //taskUnit.SaveTaskConfiguration(@"c:\01.xml"); //初始化UI this.SetUnitToUI(); //初始化编码 this.FullEncodingList(); this.Refresh(); }
// 全局更新 public static void UpdateAll(int time) { if (time < _time) { return; // 必须 >=0 } _time = time; _cur_t = null; _cur_u = null; _calls = 0; _last_t = null; _last_u = null; foreach (var t in _global_run_list.Array) { t.Update(); } }
public async Task EditTaskUnitAsync(TaskUnit taskUnit) { _context.Tasks.Update(taskUnit); await _context.SaveChangesAsync(); }
public async Task DeleteTaskUnitAsync(TaskUnit taskUnit) { _context.Tasks.Remove(taskUnit); await _context.SaveChangesAsync(); }