C#创建Windows服务的基本步骤
Windows服务是后台运行的长期进程,不依赖用户登录。用C#开发需借助System.ServiceProcess命名空间,核心是继承ServiceBase类并重写OnStart和OnStop方法。
编写一个最简Windows服务
新建“Windows Service (.NET Framework)”项目(注意:.NET Core/.NET 5+需用Worker Service替代,原生ServiceBase仅支持.NET Framework)。
在Service1.cs中重写关键方法:protected override void OnStart(string[] args)
{
File.AppendAllText(@"C:\log.txt", $"服务启动于 {DateTime.Now}\r\n");
}
protected override void OnStop()
{
File.AppendAllText(@"C:\log.txt", $"服务停止于 {DateTime.Now}\r\n");
}
编译并安装服务
安装不是双击exe,必须用命令行工具InstallUtil.exe(随.NET Framework安装)。
以管理员身份打开开发者命令提示符(Developer Command Prompt for VS) 执行:InstallUtil.exe "D:\MyService\bin\Debug\MyService.exe" 若报错“无法加载类型”,检查是否遗漏安装程序组件,或目标框架不匹配 安装成功后,在“服务”管理器(services.msc)中可看到服务,状态为“已停止” 右键启动,或运行:net start MySampleService调试与卸载技巧
服务不能直接F5调试,需模拟运行环境。
快速调试法:在Main()中加判断,开发时以控制台方式运行:#if DEBUG
Service1 myService = new Service1();
myService.OnStart(null);
Console.WriteLine("按任意键停止..."); Console.ReadKey();
myService.OnStop();
#else
ServiceBase[] ServicesToRun = new ServiceBase[]{new Service1()};
ServiceBase.Run(ServicesToRun);
#endif
基本上就这些。关键点是框架匹配、安装程序配置、管理员权限执行安装。不复杂但容易忽略细节。
