Ejemplo n.º 1
0
        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)));
                }
            }
        }
Ejemplo n.º 2
0
 public bool RemomveTask(IQueueTask queueTask)
 {
     if (_queueTasks.TryTake(out queueTask))
     {
         queueTask.Dispose();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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)));

                }
            }
        }
Ejemplo n.º 5
0
 public ToDosController(ITaskService taskService, IQueueTask queueTask)
 {
     this.taskService = taskService;
     this.queueTask   = queueTask;
 }