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 static void StopWoking()
 {
     HZLogger.Info(string.Format("队列停止工作 还有{0}个任务未完成", QueueTasks.Count));
     _workNotOver = false;
     QueueTasks = new Queue<IQueueTask>();
     QueueTaskEvent.Set();
 }
Ejemplo n.º 3
0
        public void Do()
        {
            string message = string.Empty;

            try
            {
                message = string.Format(" QueueTask Done. Data:{0}", this.Data);
                HZLogger.Info(message);
            }
            catch (FormatException exp)
            {
                HZLogger.Error(exp);
            }
            catch (Exception exp)
            {
                HZLogger.Error(exp);
            }
        }
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)));

                }
            }
        }