我了个去

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

一, 新增一个服务项目

二、

  

static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
            {
                new Service1(),BackendSingleService()   此处以逗号分隔多个服务‘,’
            };
            ServiceBase.Run(ServicesToRun);
        }
    }

 

    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {

              // TODO: 在此处添加代码以启动服务。
        }

        protected override void OnStop()
        {

            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
        }
    }

 

 

partial class BackendSingleService : ServiceBase
    {

        static int TASK_INTERVAL_Hour = 60 * 1000;                       // 每分钟检查一次

        private Object monitorSubAccountUpdateRecord = new Object();     // 确保定时器事件不会重复进入
        private System.Timers.Timer updateSubAccountUpdateRecordTimer = null;    //在应用程序中生成定期事件
        private static readonly ILog log = LogManager.GetLogger(typeof(Program));   //日志

        public BackendSingleService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            // TODO: 在此处添加代码以启动服务。
            log.Info(" Management服务启动。");
            InitializeTaskTimer();
            StartTaskTimer();
        }

        protected override void OnStop()
        {
            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
            StopTaskTimer();
            log.Info(" Management服务停止。");
        }

        /// <summary>
        /// [SubAccount]子账号更新记录情况
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UpdateSubAccountUpdateRecordTimer_Tick(object sender, ElapsedEventArgs e)
        {
            if (!Monitor.TryEnter(monitorSubAccountUpdateRecord))
            {
                log.Info("定时器在cancelReminderNearDueZoomAccountTimer_Tick返回。");
                return;
            }
            try
            {
                //子账号更新情况
                DoSubAccountUpdateRecord();
            }
            catch (Exception ex)
            {
                log.Fatal("DoReminderNearDueZoomAccount运行异常,信息:", ex);
            }
            finally
            {
                Monitor.Exit(monitorSubAccountUpdateRecord);
            }
        }


        #region 内部辅助方法
        private void InitializeTaskTimer()
        {
            log.Info("初始化任务定时器。");
            updateSubAccountUpdateRecordTimer = new System.Timers.Timer(TASK_INTERVAL_Hour);   //一小时更新一次
            updateSubAccountUpdateRecordTimer.Elapsed += new ElapsedEventHandler(UpdateSubAccountUpdateRecordTimer_Tick);
        }



        private void StartTaskTimer()
        {
            log.Info("启动任务定时器。");
            UpdateTaskTimerStatus(true);
        }

        private void StopTaskTimer()
        {
            log.Info("停止任务定时器。");
            UpdateTaskTimerStatus(false);
        }

        private void UpdateTaskTimerStatus(bool enabled)
        {
            updateSubAccountUpdateRecordTimer.Enabled = enabled;
        }
        /// <summary>
        /// [SubAccount]子账号更新记录情况 
        /// </summary>
        public void DoSubAccountUpdateRecord()
        {

        }


        #endregion
    }

 

posted on 2016-01-22 11:49  Robert123456  阅读(249)  评论(0编辑  收藏  举报