.NET开发Windows Service程序 - Topshelf
在实际项目开发过程中,会经常写一些类似定时检查,应用监控的应用。这类应用在windows平台通常都会写成window service程序。
在百度上搜索一下'c#开发windows service',基本都是使用VS windows服务的模板来开发,使用VS Attach到服务的进程来调试,使用InstallUtil工具来安装windows服务。还是有些麻烦的。
本文主要介绍一下使用Topshelf开源框架来创建windows服务,简单、方便和快捷。官方文档也很简单,花半个小时过一遍即可https://topshelf.readthedocs.io/en/latest/configuration/quickstart.html
创建一个控制台程序,安装Topshelf到工程中
Install-Package Topshelf Install-Package Topshelf.NLog // for Logging
程序示例
using System;
using System.Timers;
using Topshelf;
namespace TopshelfFirstDemo
{
    public class TownCrier
    {
        readonly Timer _timer;
        public TownCrier()
        {
            _timer = new Timer(1000) { AutoReset = true };
            _timer.Elapsed += (sender, eventArgs) => Console.WriteLine("It is {0} and all is well", DateTime.Now);
        }
        public void Start() { _timer.Start(); }
        public void Stop() { _timer.Stop(); }
    }
    class Program
    {
        static int Main(string[] args)
        {
            var exitCode = HostFactory.Run(x =>
             {
                 x.UseNLog();
                 x.Service<TownCrier>(s =>
                 {
                     s.ConstructUsing(name => new TownCrier());
                     s.WhenStarted(tc => tc.Start());
                     s.WhenStopped(tc => tc.Stop());
                 });
                 x.RunAsLocalSystem();
                 x.SetDescription("A test service using Topshelf");
                 x.SetDisplayName("TestTopshelf");
                 x.SetServiceName("TestTopshelf");
                 x.OnException(ex =>
                 {
                    // Logging
                 });
             });
            Console.WriteLine(exitCode);
            return (int)exitCode;
        }
    }
}
可通过设置Service各种参数来设置开发的windows service,关于Service的参数配置,请参考官方文档。
安装windows service
CD到示例程序Debug/Release bin目录
列出各命令
TopshelfFirstDemo.exe help
安装服务
TopshelfFirstDemo.exe install
卸载服务
TopshelfFirstDemo.exe uninstall
start和stop服务的方式有很多了,通过
- 到windows服务界面(cmd -> services.msc)手动启停
- net start/stop TestTopshelf
- TopshelfFirstDemo.exe start/stop
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号