一, 新增一个服务项目
二、
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 }