首页 > 学院 > 开发设计 > 正文

Topshelf入门

2019-11-14 16:26:27
字体:
来源:转载
供稿:网友

简介

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,然后实现接口,完成。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表