private static void Working() { while (true && _workNotOver) { try { if (QueueTasks.Count == 0) { QueueTaskEvent.WaitOne(); continue; } IQueueTask task = null; lock (_lockDequeue) { //这边有可能拿到0数量 if (QueueTasks.Count == 0) continue; task = QueueTasks.Dequeue(); } task.Do(); } catch (Exception exp) { HZLogger.Error(string.Format("队列任务处理发生异常 {0}", JsonConvert.SerializeObject(exp))); } } }
public bool RemomveTask(IQueueTask queueTask) { if (_queueTasks.TryTake(out queueTask)) { queueTask.Dispose(); return(true); } else { return(false); } }
public static void Add(IQueueTask item) { EnsureObject obj = new EnsureObject(); obj.ModelType = item.GetType().FullName; obj.Json = Lib.Helper.JsonHelper.Serialize(item); GlobalDb.Ensurance.AddOrUpdate(obj); // add log string log = obj.ModelType + ":\r\n"; log += obj.Json; LoggingIn.Write(log); }
public static void Enqueue(IQueueTask pQueueTask) { if (!_workNotOver) return; lock (_lockEnqueue) { try { QueueTasks.Enqueue(pQueueTask); QueueTaskEvent.Set(); } catch (Exception exp) { HZLogger.Fatal(string.Format("队列控制器发生异常 {0}", JsonConvert.SerializeObject(exp))); } } }
public ToDosController(ITaskService taskService, IQueueTask queueTask) { this.taskService = taskService; this.queueTask = queueTask; }