C#创建Windows服务需基于.NET Framework,继承ServiceBase并重写OnStart/OnStop;添加安装程序设置ServiceName和Account;用管理员权限的InstallUtil.exe安装;调试需条件编译模拟控制台运行。
Windows服务是后台运行的长期进程,不依赖用户登录。用C#开发需借助System.ServiceProcess命名空间,核心是继承ServiceBase类并重写OnStart和OnStop方法。
新建“Windows Service (.NET Framework)”项目(注意:.NET Core/.NET 5+需用Worker Service替代,原生ServiceBase仅支持.NET Framework)。
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");
}
称一致,如“MySampleService”)安装不是双击exe,必须用命令行工具InstallUtil.exe(随.NET Framework安装)。
服务不能直接F5调试,需模拟运行环境。
#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
基本上就这些。关键点是框架匹配、安装程序配置、管理员权限执行安装。不复杂但容易忽略细节。