• topshelf注册服务


    1.需要从nutget上获取toshelf配置

    2.代码

    using Common.Logging;
    using Quartz;
    using Quartz.Impl;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Topshelf;
    
    namespace quartzNetTest
    {
        class Program
        {
            public static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
            static void Main(string[] args)
            {
                //sched.Start();
                HostFactory.Run(x =>
                {
                    x.Service<RegisterHost>(s =>
                    {
                        s.ConstructUsing(name => new RegisterHost());
                        s.WhenStarted(tc => tc.Start());
                        s.WhenStopped(tc => tc.Stop());
                        s.WhenPaused(tc => tc.Stop());
                        s.WhenContinued(tc => tc.Start());
                    });
                    x.RunAsLocalSystem();                            // 服务使用NETWORK_SERVICE内置帐户运行。身份标识,有好几种方式,如:x.RunAs("username", "password");  x.RunAsPrompt(); x.RunAsNetworkService(); 等
                    x.SetDescription("测试服务");        //安装服务后,服务的描述
                    x.SetDisplayName("QuartzNetTest");                       //显示名称
                    x.SetServiceName("QuartzNetTest");                       //服务名称
                });
            }
        }
        public class RegisterHost
        {
            public static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
            public readonly IScheduler Scheduler;
            public RegisterHost()
            {
                logger.Trace("------- 开始 ----------------------");
                ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
                this.Scheduler = schedulerFactory.GetScheduler();
            }
            public void Start()
            {
                Scheduler.Start();
                logger.Trace("开始执行调度任务");
    
            }
            public void Stop()
            {
                if (Scheduler != null)
                {
                    logger.Trace("等待所有执行结束");
                    Scheduler.Shutdown(true);
                }
                logger.Trace("定时器结束工作");
            }
        }
    }

    没错,整个程序已经开发完了,接下来,只需要简单配置一下,即可以当服务来使用了。安装很方便:

    安装:TopshelfDemo.exe install
    启动:TopshelfDemo.exe start
    卸载:TopshelfDemo.exe uninstall

    下载demo: http://pan.baidu.com/s/1boFufSF 

  • 相关阅读:
    JavaScript中的map()函数
    JS中去除字符串空白符
    JS中的reduce函数
    Javascript中中括号的几种形式
    Jquery点击加载更多
    百度编辑器的调用
    Newtonsoft.json 二次引用出错解决办法
    WebConfig配置文件
    jqGrid首次加载时不加载任何数据
    jqGrid列的统计
  • 原文地址:https://www.cnblogs.com/elsons/p/7612926.html
Copyright © 2020-2023  润新知