C# 使用Topshelf快速创建Windows服务程序
前言:
Topshelf 用于将控制台应用程序封装成易于编写、调试和部署 的Windows 服务。它允许您使用简单的命令行语法创建和安装 Windows 服务,而无需编写繁琐的安装代码。
使用 Topshelf,您可以创建一个具有自定义启动行为、暂停和继续功能以及自定义命令行选项的 Windows 服务。它还可以将 Windows 服务作为控制台应用程序运行,以便在开发和调试时更容易地查看日志和其他输出。
总之,Topshelf 可以简化 Windows 服务的创建和管理,使其更易于使用和维护。
下面是Topshelf 的简单示例:
- 首先,您需要安装 Topshelf 库。可以使用 NuGet 包管理器来安装它,或者在 Visual Studio 中使用“管理 NuGet 包”对话框。
- 接下来,创建一个控制台应用程序,并添加对 Topshelf 的引用。然后,在 Program.cs 文件中编写以下代码:
using System; using Topshelf; namespace MyWindowsService { class Program { static void Main(string[] args) { HostFactory.Run(x => { x.Service<MyService>(s => { s.ConstructUsing(name => new MyService()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); }); x.RunAsLocalSystem(); x.SetServiceName("MyService"); x.SetDisplayName("My Service"); x.SetDescription("This is my sample service."); }); } } class MyService { public void Start() { // TODO: Add code to start your service Console.WriteLine("Service started."); } public void Stop() { // TODO: Add code to stop your service Console.WriteLine("Service stopped."); } } }
在这个示例中,我们创建了一个名为 MyService 的 Windows 服务,并定义了 Start 和 Stop 方法来启动和停止服务。我们还为服务设置了一些元数据,例如服务名称、显示名称和描述。
- 要运行此服务,您可以在 Visual Studio 中按 F5,或者通过命令行运行可执行文件并传递参数 install、start、stop 或 uninstall,例如:
cd /d %~dp0
MyWindowsService.exe uninstall
MyWindowsService.exe install
sc config MyService start=auto type= interact type= own
MyWindowsService.exe start
这将安装、启动、停止或卸载 MyService 服务。您可以在控制面板的“管理工具”下找到它,或者使用命令行工具 sc。
注意:如果安装脚本是.bat文件,输入后的文件格式可能变成UTF-8 BOM,需要把格式改成ASCII才能执行成功。