一、简介
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() { 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() { 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");
}
}
}