一、简介
Topshelf可用于创建和管理Windows服务。其优势在于不需要创建windows服务,创建控制台程序就可以。便于调试。
二、官方地址:
1、官网:http://topshelf-project.com/
2、官方文档:https://topshelf.readthedocs.io/en/latest/
3、github地址:https://github.com/Topshelf/Topshelf
三、详细示例
1、创建控制台程序“Topshelf测试”,Nuget中引入Topshelf,如图所示:
也可以用Nuget的命令行引入,命令如下:
- Install-Package Topshelf
2、在项目中添加类,命名为:TopshelfTest
内容如下:
public class TopshelfTest{readonly Timer _timer;public TopshelfTest(){_timer = new Timer(1000) { AutoReset = true };_timer.Elapsed += (sender, eventArgs) => { Run(); };}public void Start() { _timer.Start(); }public void Stop() { _timer.Stop(); }public static void Run(){Console.WriteLine("hello Topshelf");}}
3、在Main函数中加入如下代码:
public static void Main(string[] args){HostFactory.Run(x=>{x.RunAsLocalSystem();x.SetDescription("topshelf测试");x.SetDisplayName("topshelftest");x.SetServiceName("topshelftest");x.Service<TopshelfTest>(s =>{s.ConstructUsing(name => new TopshelfTest());s.WhenStarted(tc => tc.Start());s.WhenStopped(tc => tc.Stop());});});}
4、运行程序,输出如下,每秒中会执行一次Run函数,也就会打印一次“hello Topshelf”
5、安装服务:
以管理员权限打开cmd命令,管理服务的命令如下:
安装:Topshelf测试.exe install
启动:Topshelf测试.exe start
卸载:Topshelf测试.exe uninstall
执行命令需要切入到程序目录下,如图所示:
安装服务:

启动服务:

卸载服务:
安装后可以看到服务中出现了安装的服务:
四、示例代码
using System; using System.Timers; using Topshelf; namespace Topshelf测试 {public class Program{public static void Main(string[] args){HostFactory.Run(x=>{x.RunAsLocalSystem();x.SetDescription("topshelf测试");x.SetDisplayName("topshelftest");x.SetServiceName("topshelftest");x.Service<TopshelfTest>(s =>{s.ConstructUsing(name => new TopshelfTest());s.WhenStarted(tc => tc.Start());s.WhenStopped(tc => tc.Stop());});});}}public class TopshelfTest{readonly Timer _timer;public TopshelfTest(){_timer = new Timer(1000) { AutoReset = true };_timer.Elapsed += (sender, eventArgs) => { Run(); };}public void Start() { _timer.Start(); }public void Stop() { _timer.Stop(); }public static void Run(){Console.WriteLine("hello Topshelf");}} }