zoukankan      html  css  js  c++  java
  • WindowsService+Quartz.NET快速搭建

    新建一个Windows服务项目

    nuget安装Quartz.NET,我这边使用的是2.3.3版本

    1. Service改名

    2. 添加安装程序,改名

    3. ServiceInstaller->属性->StartType改为Automatic

    4. ServiceProcessInstaller->属性->Account改为LocalSystem

    5. App.config->属性->始终复制(为log4net做准备,可以不设置)

    Service->查看代码,修改如下

    Service中包含了服务的初始化、启动、终止、暂停、重启等操作

     1     public partial class Service : ServiceBase
     2     {
     3         private IScheduler scheduler;
     4 
     5         public QuartzService()
     6         {
     7             InitializeComponent();
     8             ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
     9             scheduler = schedulerFactory.GetScheduler();
    10         }
    11 
    12         /// <summary>
    13         /// 启动windows服务
    14         /// </summary>
    15         /// <param name="args">args</param>
    16         protected override void OnStart(string[] args)
    17         {
    18 
    19             scheduler.Start();
    20 
    21             #region XXXJob
    22 
    23             string xxx_group_name = "XXXGroup";
    24             string xxx_job_name = "XXXJob";
    25             string xxx_trigger_name = "XXXTrigger";
    26             string xxx_cron = "0/5 * * * * ?"; // 每5秒
    27             IJobDetail xxx_job = JobBuilder.Create<XXXJob>()
    28                 .WithIdentity(xxx_job_name, xxx_group_name)
    29                 .Build();
    30 
    31             ICronTrigger xxx_trigger = (ICronTrigger)TriggerBuilder.Create()
    32                 .WithIdentity(xxx_trigger_name, xxx_group_name)
    33                 .WithCronSchedule(xxx_cron)
    34                 .Build();
    35 
    36             scheduler.ScheduleJob(xxx_job, xxx_trigger);
    37 
    38             #endregion
    39         }
    40 
    41         /// <summary>
    42         /// 终止windows服务
    43         /// </summary>
    44         protected override void OnStop()
    45         {
    46             scheduler.Shutdown();
    47         }
    48 
    49         /// <summary>
    50         /// 暂停windows服务
    51         /// </summary>
    52         protected override void OnPause()
    53         {
    54             scheduler.PauseAll();
    55         }
    56 
    57         /// <summary>
    58         /// 继续windows服务
    59         /// </summary>
    60         protected override void OnContinue()
    61         {
    62             scheduler.ResumeAll();
    63         }
    64     }
    View Code

    创建Jobs文件夹,创建XXXJob类,并集成IJob

    1     public class XXXJob : IJob
    2     {
    3         public void Execute(IJobExecutionContext context)
    4         {
    5             throw new NotImplementedException();
    6         }
    7     }
    View Code

    生成项目,在bin下找到exe,使用管理员模式的cmd创建服务,并启动即完成项目的运行

    创建服务

    sc create XXXService binpath= C:XXXXXXService.exe

    删除服务

    sc delete XXXService

    这些还包括暂停、重启等等,都属于windows操作服务的常规命令

    特别注意:

    如何调试Windows服务

    1. 附加程序

    服务启动后,使用附加程序找到对应的exe即可

    2. 控制台模式

    [项目->属性->输出类型]改为控制台应用程序。

    [项目->属性->启动对象]改为对应的Service

    正式部署时,记得改回来

    ...
  • 相关阅读:
    QT5.4 vs2013静态加载插件的sqlite静态编译
    四个漂亮的CSS样式表
    程序猿写的程序将如何打包成安装包(最简单)
    cocos2d的-X- luaproject的LUA脚本加密
    【【分享】深入浅出WPF全系列教程及源码 】
    C#的StringBuilder 以及string字符串拼接的效率对照
    【Android中Broadcast Receiver组件具体解释 】
    【蜗牛—漫漫IT路之大学篇(九) 】
    【分布式存储系统sheepdog 】
    C#异步调用
  • 原文地址:https://www.cnblogs.com/simoje/p/10095736.html
Copyright © 2011-2022 走看看