/// <summary> /// 启动线程轮询 /// </summary> public void Run() { do { SenparcMessageQueue.OperateQueue(); Thread.Sleep(_sleepMilliSeconds); } while (true); }
/// <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)); } }