C# Quartz+Topshelf 生成windows定时服务

记录一下,防止忘记了

  1. 新建一个控制台应用程序 我用的是Framework4.5
  2. 引用包
  3. 直接上代码了, 该引用的进行引用。代码里有2个触发时间,具体的可以直接百度。
  4. 有个具体实现的方法是 TestJob
  5. 有个记录日志的文件是log。 如果日志文件访问被拒绝,可以手动建log文件,然后给上完全控制的权限就完事了。
  6. 编译之后会生成一个exe文件
    cd到盘符 安装时以管理员身份运行CMD,进入程序目录。
    xxxx.exe install topshelf
    最后开启文件
public class TestJob : IJob {
        public void Execute(IJobExecutionContext context) {
            RequestHeatValue();  //具体的实现方法在这里执行
        }


        /// <summary>
        /// 日志
        /// </summary>
        /// <param name="msg"></param>
        public void log(string msg) {
            string path = "C:\\weatherlog.txt";
            FileStream fs = new FileStream(path, FileMode.Append);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(DateTime.Now.ToString() + "   " + msg);
            sw.Close();
            fs.Close();
        }
        }
class Program {
        static void Main(string[] args) {
            HostFactory.Run(x => {
                x.Service<MyJob>(s => {
                    s.ConstructUsing(name => new MyJob());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });
                x.RunAsLocalSystem();

                x.SetDescription("数据中台--供热量");
                x.SetDisplayName("数据中台--供热量");
                x.SetServiceName("数据中台--供热量");
            });
        }

        public class MyJob {
            private IScheduler scheduler;
            public MyJob() {
                //初始化相关配置
                //调度器工厂
                ISchedulerFactory factory = new StdSchedulerFactory();
                //调度器
                scheduler = factory.GetScheduler();
                scheduler.GetJobGroupNames();

                /*-------------计划任务代码实现------------------*/
                //创建任务
                IJobDetail job = JobBuilder.Create<TestJob>().Build();
                //创建触发器
                ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("TimeTrigger", "TimeGroup")
                    .StartNow() //现在开始
                    .WithSimpleSchedule(t => t.WithIntervalInHours(3)  //触发时间
                    .RepeatForever()  //不间断重复执行
                    ).Build();

                ITrigger trigger2 = TriggerBuilder.Create()
                  .WithIdentity("TimeTrigger", "TimeGroup")
                  .StartNow() //现在开始
                .WithCronSchedule("0 15 5 * * ?")    //时间表达式,每天 5:15点
                                       .Build();


                //添加任务及触发器至调度器中
                scheduler.ScheduleJob(job, trigger);
                /*-------------计划任务代码实现------------------*/
            }
            public void Start() {
                //启动服务      
                scheduler.Start();
            }
            public void Stop() {
                //关闭服务            
                scheduler.Shutdown();
            }
        }

    }

在这里插入图片描述
这里用到2个必须的包 我用的版本是Quartz 版本 2.4 Topshelf版本 3.3。还有个是pgsql数据库的包

这个图是开启控制台服务,install。卸载是uninstall
执行文件

右键开启服务!~
右键开启服务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值