/// <summary>
 /// 启动线程轮询
 /// </summary>
 public void Run()
 {
     do
     {
         SenparcMessageQueue.OperateQueue();
         Thread.Sleep(_sleepMilliSeconds);
     } while (true);
 }
Example #2
0
 /// <summary>
 /// 操作列队
 /// </summary>
 public static void OperateQueue()
 {
     lock (FlushCacheLock)
     {
         var mq  = new SenparcMessageQueue();
         var key = mq.GetCurrentKey(); //获取最新的Key
         while (!string.IsNullOrEmpty(key))
         {
             var mqItem = mq.GetItem(key); //获取任务项
             mqItem.Action();              //执行
             mq.Remove(key);               //清除
             key = mq.GetCurrentKey();     //获取最新的Key
         }
     }
 }
        /// <summary>
        /// 析构函数,将未处理的列队处理掉
        /// </summary>
        public SenparcMessageQueueThreadUtility()
        {
            try
            {
                var mq = new SenparcMessageQueue();
                Trace.WriteLine("SenparcMessageQueueThreadUtility执行析构函数");
                Trace.WriteLine(string.Format("当前列队数量:{0}", mq.GetCount()));

                SenparcMessageQueue.OperateQueue();//处理列队
            }
            catch (Exception ex)
            {
                //此处可以添加日志
                Trace.WriteLine(string.Format("SenparcMessageQueueThreadUtility执行析构函数错误:{0}", ex.Message));
            }
        }