• Topshelf入门


    简介

    Topshelf允许我们快速的开发、调试和部署windows服务。

    官方网站

    使用方法

    第一步:安装

    Install-Package Topshelf

    Install-Package Topshelf.Log4Net

    虽然安装Topshelf.Log4Net不是必须的,不过建议安装。

    第二步:实现服务逻辑

    ServiceRunner.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Threading;
    using System.IO;
    
    using Topshelf;
    using log4net;
    using log4net.Config;
    
    namespace WHTR.Demos.Topshelf
    {
        public sealed class ServiceRunner : ServiceControl, ServiceSuspend
        {
            private static ILog Logger = LogManager.GetLogger(typeof(Program));
    
            private Timer timer;
    
            static ServiceRunner()
            {
                var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
                XmlConfigurator.ConfigureAndWatch(logCfg);
            }
    
            public bool Start(HostControl hostControl)
            {
                this.timer = new Timer(new TimerCallback(this.PrintMessage), null, 1000, 1000);
    
                return true;
            }
    
            public bool Stop(HostControl hostControl)
            {
                throw new NotImplementedException();
            }
    
            public bool Continue(HostControl hostControl)
            {
                throw new NotImplementedException();
            }
    
            public bool Pause(HostControl hostControl)
            {
                throw new NotImplementedException();
            }
            private void PrintMessage(object state)
            {
                Logger.Info(DateTime.Now);
            }
        }
    }
    

    备注:要实现的接口及方法名意义非常明显,这里就不做过多说明了。

    第三步:调用

    Program.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using Topshelf;
    using Topshelf.ServiceConfigurators;
    
    namespace TopshelfDemos
    {
        class Program
        {
            static void Main(string[] args)
            {
                HostFactory.Run(x =>
                {
                    //x.UseLog4Net("~/log4net.config");
    
                    x.Service<ServiceRunner>();
    
                    x.SetDescription("TopshelfDemos说明");
                    x.SetDisplayName("TopshelfDemos显示名称");
                    x.SetServiceName("TopshelfDemos服务名称");
    
                    x.EnablePauseAndContinue();
                });
            }
        }
    }
    

    第四步:安装&卸载

    • 安装:TopshelfDemos.exe install
    • 卸载:TopshelfDemos.exe uninstall
    • 安装不同的实例:TopshelfDemos.exe install -instance "xxx" -servicename "xxx" -description "xxx" -displayname "xxx"
    • 卸载不同的实例 TopshelfDemos.exe uninstall -instance "xxx"

    备注

    以前以为开发Windows服务是多么高大上的东西,没想到这么简单。就两步,引用Topshelf.dll,然后实现接口,完成。

  • 相关阅读:
    496. 下一个更大元素 I 力扣(简单) 单调栈
    240. 搜索二维矩阵 II 力扣(中等) Z字型查找
    638. 大礼包 力扣(中等) 记忆化搜索,弱点
    453. 最小操作次数使数组元素相等 力扣(简单) 没想出来
    传纸条
    同余方程
    花匠
    华容道
    货车运输
    火柴排队
  • 原文地址:https://www.cnblogs.com/quan2005/p/3974579.html
Copyright © 2020-2023  润新知